web-dev-qa-db-ja.com

ZonedDateTimeまたはJava 8を使用して任意の日時をUTCに変換する方法

ZonedDateTimeを使用して、日付06-12-2015 02:10:10 PMをデフォルトゾーンからUTCに変換しようとしています。

LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
ZonedDateTime utc = ZonedDateTime.of(localDateTime, ZoneOffset.UTC);

しかしutc2015-12-06T14:10:10Zではなく06-12-2015 09:10:10 AMを返します

日付をデフォルトゾーンからUTCに変換するにはどうすればよいですか?与えられた答え ここ 現在時刻をUTCに変換します。

6
Bilal Shah

ZonedDateTime.ofInstant(Instant, ZoneId) を使用できます。ここで、2番目のパラメーターはUTCです(インスタントはローカルオフセットを知っています)。何かのようなもの、

String source = "06-12-2015 02:10:10 PM";
String pattern = "MM-dd-yyyy hh:mm:ss a";
DateFormat sdf = new SimpleDateFormat(pattern);
try {
    Date date = sdf.parse(source);
    ZonedDateTime zdt = ZonedDateTime.ofInstant(date.toInstant(), ZoneId.of("UTC"));
    System.out.println(zdt.format(DateTimeFormatter.ofPattern(pattern)));
} catch (ParseException e) {
    e.printStackTrace();
}

そして、私は得ます(私のローカルゾーンオフセットに対応します)

06-12-2015 06:10:10 PM
17
Elliott Frisch