JSONでフォーマットYYYY-mm-DD HH:MM:SS
のDateStringを変換し、コードを使用してPOJOに永続化しました
DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
this.startDate = format.parseDateTime(startDate);
POJOをJSONに戻すと、日付は2013-07-12T18:31:01.000Z
のように書き込まれます。
時間文字列2013-07-12T18:31:01.000Z
を解析してJodaDateTimeオブジェクトに戻すにはどうすればよいですか。フォーマッターはどうあるべきか。YYYY-mm-DD HH:MM:SS
を使用しましたが、機能しませんでした
2013-07-12T18:31:01.000Z
標準のISO日時形式です。
標準のJoda日時フォーマッターを使用できます ISODateTimeFormat :: dateTime()
例:
String startDate = "2013-07-12T18:31:01.000Z";
DateTime dt = ISODateTimeFormat.dateTime().parseDateTime(startDate);
この場合、日付はタイムゾーンの日付に変換されます。
タイムゾーンを無視する場合は、フォーマッターでUTC
ゾーンを使用します。
String startDate = "2013-07-12T18:31:01.000Z";
DateTime dt = ISODateTimeFormat.dateTime().withZone(DateTimeZone.UTC).parseDateTime(startDate);
パターンにX
を追加する必要があります。 SimpleDateFormat
API には、「ISO8601タイムゾーン」のDateFormat
を含む、X
で使用できるフィールドの完全なリストが含まれています。
ISO8601タイムゾーンは次のように指定されます
パターン文字の数は、フォーマットと解析の両方のフォーマットを次のように指定します。
ISO8601TimeZone: OneLetterISO8601TimeZone TwoLetterISO8601TimeZone ThreeLetterISO8601TimeZone OneLetterISO8601TimeZone: Sign TwoDigitHours Z TwoLetterISO8601TimeZone: Sign TwoDigitHours Minutes Z ThreeLetterISO8601TimeZone: Sign TwoDigitHours : Minutes Z
APIドキュメントは完全に明確ではありません:読む必要があります
OneLetterISO8601TimeZoneは「X」を意味し、Sign TwoDigitHoursまたはZを生成します。
したがって、-05のようなもの
TwoLetterISO8601TimeZoneは「XX」を意味し、Sign TwoDigitHours MinutesまたはZを生成します。
したがって、-0500のようなもの
threeLetterISO8601TimeZoneは「XXX」を意味し、Sign TwoDigitHours:Minutesを生成します。
したがって、-05:00のようなもの