gpt4 book ai didi

Java 和 Windows 区域设置

转载 作者:行者123 更新时间:2023-12-02 00:24:15 25 4
gpt4 key购买 nike

抱歉,如果这是重新发布的内容。我没有找到合适的答案。

请忽略最佳实践和已弃用的 API 的使用。

我想将以下日期“Mon May 19 02:16:52 EDT 2003”格式化为“MM/dd/yyyy HH:mm:ss”。同样,我只想更改输出格式,并且这是从我的 EST 笔记本电脑上执行的。

我的 Windows 区域设置是:

当前时区:东部夏令时间

时区:(GMT-05:00) 东部时间(美国和加拿大)

根据夏令时变化自动调整时钟:选中

这段java代码可以做到这一点:

Date aDate = new Date("Mon May 19 02:16:52 EDT 2003");
SimpleDateFormat sdf = new SimpleDateFormat( "MM/dd/yyyy HH:mm:ss");
System.out.println("Formatted Date: " + sdf.format(aDate));

输出为

Formatted Date: 05/19/2003 02:16:52

现在我将 Windows 设置更改为以下内容(仅取消选中 DST 设置)

当前时区:东部夏令时间

时区:(GMT-05:00) 东部时间(美国和加拿大)

根据夏令时变化自动调整时钟:选中

输出是:

Formatted Date: 05/19/2003 01:16:52

问题:

  1. 为什么输出关闭一个小时?
  2. 即使在格式化时,java 也会使用 Windows DST 设置吗?我虽然java维护了自己的不同时区的DST设置时间数据。

最佳答案

在内部,日期由一个长值存储,该值表示某个纪元过去的毫秒数。当您关闭计算机上的夏令时时,您就更改了时区。所以 Java 使用相同的时间数字和不同的时区,这就是为什么你拥有你所拥有的

关于Java 和 Windows 区域设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10322631/

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