我怎样才能得到以下格式:
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
谢谢!:)
JODA Javadoc指示输出 ISO8601toString
中DateTime
的日期。如果您需要将所有时间字段清零,请执行以下操作:
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 结尾。
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);