gpt4 book ai didi

Java Date,以特定的日光模式呈现

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:58:59 25 4
gpt4 key购买 nike

我有一个 Java Date,它是今年夏天夏令时期间的数据。例如:

Jun 01, 2009 06:00 AM PDT

我的问题是,如何将此日期显示为我的本地时区和当前夏令时模式(在我的例子中是太平洋标准时间)?

Jun 01, 2009 05:00 AM PST

Java 的Date.toString()SimpleDateFormat原始 夏令时模式显示日期。示例:

System.out.println(new Date(1243861200000L));

输出:

Mon Jun 01 06:00:00 PDT 2009

DateFormat dateFormat = new SimpleDateFormat("MMM dd, yyyy hh:mm aa zzz");
dateFormat.setTimeZone(TimeZone.getTimeZone("PST"));
System.out.println(dateFormat.format(new Date(1243861200000L)));

输出:

Jun 01, 2009 06:00 AM PDT

我真正想看到的是太平洋标准时间上午 5:00(相当于太平洋夏令时间上午 6:00)。有没有办法强制它使用另一种夏令时模式?

跟进:顺便说一下,这是 Windows XP 的行为。在冬季,6 月 1 日早上 6 点创建的文件(通过资源管理器、命令提示符等)将显示为 6 月 1 日早上 5 点。

最佳答案

我认为没有办法强制 DateFormatTimeZone 格式应用于不存在的时间。 PST 仅适用于冬季,PDT 仅适用于夏季。

我用 TimeZone.getAvailableIDs() 返回的所有 TimeZone 格式化了这个日期,并找到了两个返回那个特定时间的 PST:Pacific/Pitcairn和 SystemV/PST8。您可以尝试使用其中一个,但我不知道还有哪些其他规则适用于这些时区对象。

如果您只关心获得该偏移量的时间,您可以使用 GMT-8 作为您的时区。但是,该字符串将显示在您的格式化日期字符串中,而不是 PST。

更新:这是一种采用任何时区并使其忽略所有夏令时规则的方法。您可以获取一个 TimeZone 对象,然后获取另一个 TimeZone.getTimeZone() 对象。在第二个对象上,将 IdrawOffset 设置为第一个 TimeZone 中的相应对象。

例如:

    DateFormat dateFormat = new SimpleDateFormat("MMM dd, yyyy hh:mm aa zzz");
TimeZone defaultTimeZone = TimeZone.getDefault();
TimeZone timeZone = TimeZone.getTimeZone("");
timeZone.setID(defaultTimeZone.getID());
timeZone.setRawOffset(defaultTimeZone.getRawOffset());
dateFormat.setTimeZone(timeZone);
System.out.println(dateFormat.format(new Date(1243861200000L)));

这将准确地打印出您要查找的内容。

关于Java Date,以特定的日光模式呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1760352/

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