0

ISO 8601 定义了ISO 星期日期格式。它可以用来表示这样的日期:

  • 2013-10-05等于2013-W40-6,这是 ISO 周中的日期2013-W40
  • 2008-12-29等于2009-W01-1,它是 ISO 周中的日期2009-W01

如何在 ISO 星期日期和 Joda Time 类型之间来回转换,例如ReadableDateTime

4

1 回答 1

0

使用 Joda Time 提供的ISODateTimeFormat.
它有以下方法:

  • ISODateTimeFormat.weekyearWeekDay()ISODateTimeFormat.weekDate()(对于诸如 等格式2009-W01-1
  • ISODateTimeFormat.weekyearWeek()(对于诸如 等格式2009-W01
  • ISODateTimeFormat.basicWeekDate()(对于紧凑的格式,例如2009W011

它们可以这样使用:

ReadableDateTime endOfYearDateTime = DateTime.parse("2008-12-29T13:06Z");
logger.info("endOfYearDateTime        : {}", endOfYearDateTime);

String endOfYearISOWeekDateString = ISODateTimeFormat.weekyearWeekDay().print(endOfYearDateTime);
logger.info("isoCalendarWeekDateString: {}", endOfYearISOWeekDateString);

ReadableDateTime reverseEndOfYearDateTime = ISODateTimeFormat.weekyearWeekDay().parseDateTime(endOfYearISOWeekDateString);
logger.info("reverseEndOfYearDateTime : {}", reverseEndOfYearDateTime);

上面的代码将记录以下数据:

endOfYearDateTime        : 2008-12-29T13:06:00.000Z
isoCalendarWeekDateString: 2009-W01-1
reverseEndOfYearDateTime : 2008-12-29T00:00:00.000+01:00
于 2013-10-05T13:40:33.160 回答