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
?
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
?
使用 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