Android DateTimeFormatter withZone 不工作

标签: Java Android
发布时间: 2016/10/10 21:08:18
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我格式 UTC 日期,我希望它显示在本地 time 。然而,使用 withZone(ZoneId.systemDefault()); 不执行任何操作。 这里是一些代码和的值 dd2 是一样的但我期待 d2 要早 6 个小时,因为我在 MST。

    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();
}
官方微信
官方QQ群
31647020