【问题标题】:Getting ISO8601 from JodaTime with milliseconds以毫秒为单位从 JodaTime 获取 ISO8601
【发布时间】:2013-04-18 17:26:26
【问题描述】:

我想将我的日期 "2013-03-04T23:00:00" 转换为 "yyyy-MM-dd'T'HH:mm:ss.SSSZ",但我不断收到 "2013-03-04'T'23:00:00.000+0000"。有什么帮助吗?

item.getEnd() 是一个 XMLGregorianCalendar。

Calendar calendar  = item.getEnd().toGregorianCalendar();
calendar.setTimeZone(TimeZone.getTimeZone("UTC"));

Date date = calendar.getTime();
DateTime iso8601 = new DateTime(calendar);

iso8601.toString("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

【问题讨论】:

  • 有什么问题?那个millis是000
  • ISO8601 格式不需要任何特定的精度。省略小数,甚至完全省略秒字段,都是完全有效的。
  • 我同意,但我正在使用的 API 似乎只喜欢这种格式。
  • 出于好奇,需要特定精度的 API 是什么?我记得不久前读过一篇关于某些网络浏览器的帖子,该浏览器需要零位或三位小数的精度,但在两位上却失败了。我现在找不到那个帖子……你要喂它的是一个 JavaScript API 吗?还是别的什么?
  • 我相信这是一个java后端,不能肯定。

标签: java date timezone jodatime iso8601


【解决方案1】:

您应该能够使用 JodaTime 内置的 ISODateTimeFormat 类。 the documentation 中的例子是:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-29
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 2011-09-03
    • 2017-08-05
    相关资源
    最近更新 更多