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