如何将Java日期转换为 XML 日期时间字符串?
为了定义日期和时间,使用了DateTime数据类型。日期时间以“ YYYY-MM-DDThh:mm:ss”格式定义,其中:
- YYYY表示年份
- MM代表月份
- DD显示当天
- T表示所需时间段的开始。
- hh确定小时
- mm代表分钟
- ss表示第二个
示例: 2002-05-30T09:00:00
什么是 XML DateTime 格式的时区?
为了指定时区,我们可以通过在时间后面插入“Z”来输入 UTC 时间的 DateTime,
例子:
2002-05-30T09:30:10Z
或者我们可以通过在时间后面添加正时间或负时间来确定与 UTC 时间的偏移量,
例子:
2002-05-30T09:30:10-06:00
2002-05-30T09:30:10+06:00
因此,时区可以定义为“Z”(UTC)或“(+|-)hh:mm”。未定义的时区称为“未确定”。字面量“Z”(祖鲁语)用作时区指示符,在时间末尾添加时表示时间为 UTC。
什么是时间偏移?
时间偏移是要从协调世界时 (UTC) 时间中添加或减去的时间量,以获取特定地点的当前时间。
将Java日期转换为 XML 日期时间字符串的方法:
- 首先我们创建一个 SimpleDateFormat 对象。此类在Java解析和格式化日期和时间。
- 然后,我们创建一个 StringBuffer 来保存 XML 格式的字符串。
- 此外,我们计算 ZoneOffset。它确定格林威治/UTC 时间的时区偏移量。时区偏移量是时区与格林威治/UTC 不同的时间量。这通常是固定的小时数和分钟数。世界不同地区有不同的时区偏移。例如,印度比格林威治/UTC 早 05:30。
- 最后,我们将所有需要的信息组合在一个字符串,这就是格式化的 XML字符串。
Java
// Java program to Convert Java Date to XML DateTime String
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class GFG {
public static void main(String[] args)
{
// formatting time
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat format2 = new SimpleDateFormat("HH:mm:ss");
// create a StringBuffer(in order to use its append
// functionality) to store the date in XML DateTime
// format
StringBuffer buff = new StringBuffer();
// get the date of the system by creating an
// instance of the Date class
Date date = new Date();
// append the formated date(yyyy-MM-dd) in the
// buffer
buff.append(format1.format(date));
// append T
buff.append('T');
// and finally append the formated time(HH:mm:ss) in
// buffer
buff.append(format2.format(date));
// calculating time zone
// get the calendar instance in order to get the
// time offset
Calendar calendar = Calendar.getInstance();
// The get(int field_value) method of Calendar class
// is used to return the value of the given calendar
// field in the parameter.
int offset = calendar.get(calendar.ZONE_OFFSET)
/ (1000 * 60);
// add the sign(+/-) according to the value of the
// offset
if (offset < 0) {
buff.append('-');
// if the offset is negative make it positive by
// multiplying it with -1, we will be using it
//further
offset *= -1;
}
else {
buff.append('+');
}
// get the hour from the offset and store it in a
// String
String s1 = String.valueOf(offset / 60);
// check if the retrieved hour is single digit or
// two digit in case of single digit, add 0 before
// the significant value
for (int i = s1.length(); i < 2; i++) {
buff.append('0');
}
// then finally append the s1 in our buffer
buff.append(s1);
buff.append(':');
// now retrieve the minutes from offset, and
// validate it in the same way as we did for the hour
String s2 = String.valueOf(offset % 60);
for (int i = s2.length(); i < 2; i++) {
buff.append('0');
}
// append the minutes in buffer
buff.append(s2);
// finally we are done formatting the Java Date time
// into XML DateTime format convert the buffer into
// the String, and print it
System.out.println(buff.toString());
}
}
输出
2021-02-23T10:38:30+00:00