JodaTime DateTime,ISO8601 GMT日期格式

时间:2013-02-07 13:53:51

标签: java jodatime

如何获得以下格式:

2015-01-31T00:00:00Z

(ISO8601 GMT日期格式)

joda time(java)中的DateTime对象?例如

DateTime time = DateTime.now();
String str = // Get something like 2012-02-07T00:00:00Z

谢谢! :)

4 个答案:

答案 0 :(得分:39)

JODA Javadoc表示toString的{​​{1}}输出ISO8601中的日期。如果您需要将所有时间字段清零,请执行以下操作:

DateTime

这将包括输出字符串中的毫秒数。要摆脱它们,你需要使用@jgm建议的格式化程序。

如果您希望它与此帖子中要求的格式相匹配(使用文字final DateTime today = new DateTime().withTime(0, 0, 0, 0); System.out.println(today); 字符),这将有效:

Z

如果您需要将值设置为UTC,请按以下方式对其进行初始化:

System.out.println(today.toString(DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss'Z'")));

答案 1 :(得分:8)

@jgm 在文档中,描述了ISODateTimeFormat.dateTime()

  

返回一个格式化程序,它结合了完整的日期和时间,以a分隔   'T'(yyyy-MM-dd'T'HH:mm:ss.SSSZZ)。

但如果您设置时区,例如

DateTimeFormatter fmt = ISODateTimeFormat.dateTime();  
System.out.println(fmt.print(new DateTime().toDateTime(DateTimeZone.UTC)));

它将以Z结尾。

答案 2 :(得分:3)

使用ISODateTimeFormat

DateTime dt = new DateTime();
DateTimeFormatter fmt = ISODateTimeFormat.dateTimeNoMillis();
String str = fmt.print(dt);

答案 3 :(得分:2)

设置DateTimeFormatter

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ");
formatter.print(time);