私は文字列形式の日付があります。解析する必要があります。世界中からのタイムゾーンで、次のようなフォーマットは次のとおりです。JodaTimeで元のタイムゾーンを保持する方法
String stringDate = "2016-04-29 12:16:49.222+04:30";
String pattern = "yyyy-MM-dd HH:mm:ss.SSSZ";
java.util.Date
が:
、セパレータとタイムゾーンを受け入れていないようです。だから私はJodatimeライブラリにしようとしている:
DateTime formattedDate = DateTimeFormat.forPattern(pattern).parseDateTime(stringDate);
LocalDateTime formattedDate2 = DateTimeFormat.forPattern(pattern).parseLocalDateTime(stringDate);
MutableDateTime formattedDate3 = DateTimeFormat.forPattern(pattern).parseMutableDateTime(stringDate);
System.out.println(formattedDate);
System.out.println(formattedDate2);
System.out.println(formattedDate3);
これらのライン出力:
2016-04-29T09:46:49.222+02:00
2016-04-29T12:16:49.222
2016-04-29T09:46:49.222+02:00
私の知る限り、私はパリにいるよ(フォーマッタが地雷を遵守するために、出力のタイムゾーンを変更理解し、 UTC + 2)ですが、出力は元のタイムゾーンを維持します。 Jodatimeライブラリでも可能ですか?または私は別のものに変更する必要がありますか?
編集:(私のローカルタイムゾーンオフセット)120の代わりに: 実は私は、タイムゾーンのオフセットは(4時間30分の時間帯は、stringDate
のオフセット)270だろうどのDate
オブジェクトを取得する必要があります。
System.out.println(formattedDate.toDate().getTimezoneOffset()); // I expect 270 but I get 120
期待される出力は?私は元の文字列を印刷するだけでいいのですね。 – joc
@joc実際には、 'TimeZoneOffset()'が120 * 'ではなく270 *である' Date'オブジェクトが必要です。 (私の質問を更新します) – Fractaliste
'Date.getTimezoneOffset()'はJDK 1.1から廃止され、常に_yourローカルのtimezone_offsetを返します。タイムゾーンサポートを取得するには、jodaの 'DateTime'またはjava-8の' ZonedDateTime'を使用できます。あなたはどちらを好みますか? – Roman