📌  相关文章
📜  如何将Java日期转换为 XML 日期时间字符串?

📅  最后修改于: 2022-05-13 01:55:08.582000             🧑  作者: Mango

如何将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