26

我怎样才能得到以下格式:

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

4 回答 4

43

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

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);
于 2013-02-07T14:12:29.107 回答
9

@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 结尾。

于 2013-04-25T07:06:54.977 回答
5

使用ISODateTimeFormat

DateTime dt = new DateTime();
DateTimeFormatter fmt = ISODateTimeFormat.dateTimeNoMillis();
String str = fmt.print(dt);
于 2013-02-07T13:59:17.387 回答
2

设置一个DateTimeFormatter

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ");
formatter.print(time);
于 2013-02-07T13:56:44.710 回答