【问题标题】:JodaTime DateTime, ISO8601 GMT date formatJoda Time DateTime,ISO 8601 GMT 日期格式
【发布时间】:2013-02-07 13:53:50
【问题描述】:

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

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

谢谢! :)

【问题讨论】:

  • 这怎么不清楚?他准确地定义了他想要什么。

标签: java jodatime


【解决方案1】:

使用ISODateTimeFormat

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

【讨论】:

  • 请注意,ISODateTimeFormat.dateTime() 以 ZZ 而不是 Z 结尾。有区别(ZZ 前面有一个冒号)。
  • 虽然完全不清楚 petter 到底在问什么,但您的示例与他的示例不同:它在输出中包含毫秒并使用默认时区而不是 UTC。
【解决方案2】:

JODA Javadoc 表示toString for DateTime 以 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);

【讨论】:

  • :ss'Z" 之后是否应该有第二个单引号?
  • 如果字符串中有偏移量会发生什么,我需要解析字符串以获得没有偏移量的日期时间' DateTime today = new DateTime("2016-07-11T05:04:30 -05:30"); System.out.println(today.toString(DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss")));'给出这样的结果 "2016-07-11T05:34:30"更改 mins 字段的位置@petter kjelkenes
  • @spuder 是的。 Z 之后的答案中缺少单引号。
【解决方案3】:

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

【讨论】:

  • 或者:fmt.print(DateTime.now(DateTimeZone.UTC))
【解决方案4】:

设置DateTimeFormatter:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 2017-01-11
    • 2013-10-17
    • 2012-12-11
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多