gpt4 book ai didi

java - 通过 SimpleDateFormat 解析时间字符串得到错误的日期。 (偏移 1 小时)[Android/Java]

转载 作者:太空宇宙 更新时间:2023-11-04 14:07:03 25 4
gpt4 key购买 nike

首先,我想澄清,这不是夏令时问题。

其次,经过努力,似乎与SimpleDateFormat中使用的语言环境有关。

第三,它似乎只发生在 PST/PDT 时区。 UTC 没问题。

<小时/>

这是测试代码。

使用美国和英语区域设置来解析相同的日期。

    try {
Date date = new Date();
SimpleDateFormat US_format = new SimpleDateFormat("MMM d HH:mm:ss z", Locale.US);
SimpleDateFormat EN_format = new SimpleDateFormat("MMM d HH:mm:ss z", Locale.ENGLISH);

US_format.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles")); //Set PST Timezone
String US_str = US_format.format(date);
Log.i("DEBUG", "US_str: " + US_str);
Log.i("DEBUG", "US_str: " + US_format.format(US_format.parse(US_str)));

EN_format.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles")); //Set PST Timezone
String EN_str = EN_format.format(date);
Log.i("DEBUG", "EN_str: " + EN_str);
Log.i("DEBUG", "EN_str: " + EN_format.format(EN_format.parse(EN_str)));
} catch (ParseException e) {
Log.i("DEBUG", "Parsing Error");
}

结果是

02-26 19:42:42.863 I/DEBUG﹕ US_str: Feb 26 19:42:42 PST

02-26 19:42:42.865 I/DEBUG﹕ US_str: Feb 26 18:42:42 PST

02-26 19:42:42.865 I/DEBUG﹕ EN_str: Feb 26 19:42:42 PST

02-26 19:42:42.866 I/DEBUG﹕ EN_str: Feb 26 19:42:42 PST

这是一个错误吗?为什么 Locate.US 存在一小时的差异?

======================================

更新:这似乎只发生在 Android 5.0 设备上。其他环境似乎还可以。

在 Android 问题跟踪器上发布了一个错误。 (问题158265)

最佳答案

我认为错误可能来自 Logger。它与区域设置无关。

    Date date = new Date();
SimpleDateFormat US_format = new SimpleDateFormat("MMM d HH:mm:ss z", Locale.US);
SimpleDateFormat EN_format = new SimpleDateFormat("MMM d HH:mm:ss z", Locale.ENGLISH);

String US_str = US_format.format(date);
System.out.println( "US_str: " + US_str);
System.out.println( "US_str: " + US_format.format(US_format.parse(US_str)));

String EN_str = EN_format.format(date);
System.out.println( "EN_str: " + EN_str);
System.out.println( "EN_str: " + EN_format.format(EN_format.parse(EN_str)));

这是在我的电脑上获得的输出:

US_str:2 月 27 日 12:18:26 国际标准时间

US_str:2 月 27 日 12:18:26 国际标准时间

EN_str:2 月 27 日 12:18:26 国际标准时间

EN_str:2 月 27 日 12:18:26 国际标准时间

希望这对你有帮助。

关于java - 通过 SimpleDateFormat 解析时间字符串得到错误的日期。 (偏移 1 小时)[Android/Java],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28757288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com