gpt4 book ai didi

Java SimpleDateFormat 解析后时区错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:05 24 4
gpt4 key购买 nike

为什么:当我输入带有 GMT 时区的日期字符串时,SimpleDateFormat 会解析它并输出 EET 时区?

public static String DATE_FORMAT="dd MMM yyyy hh:mm:ss z";
public static String CURRENT_DATE_STRING ="31 October 2011 11:19:56 GMT";
...
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT, Locale.US);
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(simpleDateFormat.parseObject(CURRENT_DATE_STRING));

输出是:

Mon Oct 31 13:19:56 EET 2011

而不是

Mon Oct 31 13:19:56 GMT 2011

最佳答案

您正在打印 Date.toString() 的结果。 Date 没有任何时区的概念 - 它只是自 UTC Unix 纪元以来的毫秒数。 Date.toString() 始终 使用系统默认时区。

请注意,您不应期待“Mon Oct 31 13:19:56 GMT 2011”,因为您指定的 GMT 时间是 11 点,而不是 13 点。

如果要使用特定时区进行打印,则应使用另一个DateFormat 进行打印,而不是使用Date.toString()。 (Date.toString() 一直造成这样的困惑;这真的很不幸。)

关于Java SimpleDateFormat 解析后时区错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7952686/

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