gpt4 book ai didi

Java.util.Date : try to understand UTC and ET more

转载 作者:搜寻专家 更新时间:2023-11-01 01:23:36 24 4
gpt4 key购买 nike

我住在北卡罗来纳州,顺便说一下,它位于东区。所以我编译并运行这段代码,它打印出同样的东西。文档说 java.util.date 试图反射(reflect) UTC 时间。

Date utcTime = new Date();
Date estTime = new Date(utcTime.getTime() + TimeZone.getTimeZone("ET").getRawOffset());
DateFormat format = new SimpleDateFormat("dd/MM/yy h:mm a");
System.out.println("UTC: " + format.format(utcTime));
System.out.println("ET: " + format.format(estTime));

这就是我得到的

UTC: 11/05/11 11:14 AM
ET: 11/05/11 11:14 AM

但如果我转到这个website这试图反射(reflect)所有不同的时间,UTC 和 ET 是不同的。我这里做错了什么

最佳答案

那是因为 getRawOffset() 返回 0 - 它也为我做“ET”,事实上 TimeZone.getTimeZone("ET") 基本上返回 GMT。我怀疑那不是你的意思。

我认为北卡罗来纳州最好的奥尔森时区名称是“America/New_York”。

请注意,您不应该只将时区的原始偏移量添加到 UTC 时间 - 您应该改为设置格式化程序的时区。 Date 值并不真正了解时区...它始终只是自 1970 年 1 月 1 日 UTC 以来的毫秒数。

所以你可以使用:

导入 java.text.;导入 java.util.;

Date date = new Date();
DateFormat format = new SimpleDateFormat("dd/MM/yy h:mm a zzz");

format.setTimeZone(TimeZone.getTimeZone("America/New_York"));
System.out.println("Eastern: " + format.format(date));

format.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
System.out.println("UTC: " + format.format(date));

输出:

Eastern: 11/05/11 11:30 AM EDT
UTC: 11/05/11 3:30 PM UTC

我还建议您现在考虑使用 java.time - 这比 java.util 类要好得多。

关于Java.util.Date : try to understand UTC and ET more,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5966606/

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