繁体   English   中英

JodaTime DateTime,ISO8601 GMT日期格式

[英]JodaTime DateTime, ISO8601 GMT date format

如何获得以下格式:

2015-01-31T00:00:00Z

(ISO8601 GMT日期格式)

在joda时间(java)中的DateTime对象? 例如。

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

谢谢! :)

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

final DateTime today = new DateTime().withTime(0, 0, 0, 0);
System.out.println(today);

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

如果你希望它匹配你在这篇文章中要求的格式(使用文字Z字符),这将有效:

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

如果您需要将值设置为UTC,请将其初始化为:

final DateTime today = new DateTime().withZone(DateTimeZone.UTC).withTime(0, 0, 0, 0);

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

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

但是如果你设置时区,例如,

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

它将以Z结尾。

使用ISODateTimeFormat

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

设置DateTimeFormatter

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM