3

UTC 日付をフォーマットしていますが、現地時間で表示したいです。ただし、使用withZone(ZoneId.systemDefault());しても何も起こりません。ここにいくつかのコードがあり、 と の値はd同じd2ですが、私は MST にいるので d2 が 6 時間早くなると予想しています。

    public static final String DATE_TIME_PATTERN = "uuuuMMddHHmmss";

    String date = "20160908222020";
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_TIME_PATTERN).withZone(ZoneId.systemDefault());
    LocalDateTime d = LocalDateTime.parse(date, formatter);
    DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern(DATE_TIME_PATTERN);
    LocalDateTime d2 = LocalDateTime.parse(date, formatter2);
4

1 に答える 1

2

SimpleDateFormat を使用すると、何が起こっているのかを理解しやすくなります (このアプローチは私にとってはうまくいきました)。

public static final String SOURCE_DATE_FORMAT = "yyyyMMddHHmmss";
String date = "20160908222020";

SimpleDateFormat sourceDateFormat = new SimpleDateFormat(SOURCE_DATE_FORMAT);
sourceDateFormat.setTimeZone("UTC"); // set this to whatever the source time zone is

String adjustedDate = "";
try {
    Date parsedDate = sourceDateFormat.parse(date);
    adjustedDate = DateFormat.getDateTimeInstance().format(parsedDate); // getDateTimeInstance() returns the local date/time format (in terms of language/locale and time zone) of the device and format() formats the parsed date to fit that instance
} catch (ParseException e) {
    e.printStackTrace();
}
于 2016-09-12T16:31:19.940 に答える