2016-09-12 16 views
1

UTCの日付を書式設定していて、現地時間で表示します。ただし、withZone(ZoneId.systemDefault());を使用すると何も行われません。 ここにいくつかのコードがあります。dd2の値は同じですが、私はMSTにいるので、d2は6時間早くなると思っています。AndroidのDateTimeFormatterでZoneが機能しない

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); 

答えて

1

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(); 
} 
+0

おかげで解決です!これは完璧です! – CodyMace

0

は、新しい日付/時刻のAPI

String DATE_TIME_PATTERN = "uuuuMMddHHmmss"; 
String utcDateTimeString = "20160908222020"; 

DateTimeFormatter utcFormatter = DateTimeFormatter.ofPattern(DATE_TIME_PATTERN).withZone(ZoneId.of("UTC")); 
ZonedDateTime utcZonedDateTime = ZonedDateTime.parse(utcDateTimeString , utcFormatter); 

ZonedDateTime systemZonedDateTime = utcZonedDateTime.withZoneSameInstant(ZoneId.systemDefault()); 
LocalDateTime systemLocalDateTime = systemZonedDateTime.toLocalDateTime(); 
関連する問題