gpt4 book ai didi

java - 在 Java 中格式化日期

转载 作者:行者123 更新时间:2023-11-29 05:31:14 24 4
gpt4 key购买 nike

我在使用 Java 格式化日期时遇到问题。日期格式化程序似乎使用 BST(英国夏令时)解析我的字符串,而不是下面代码中 dateStr 字符串中 +0000 定义的 GMT+0。

String dateStr = "Tue Oct 02 01:06:00 +0000 2012";
DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");
Date date = df.parse(dateStr);

// Test the date
System.out.println(date.toString());

当我运行上面的代码时,我得到:

Tue Oct 02 02:06:00 BST 2012

这显然不是我想要的。一个有用的信息点可能是当我运行以下命令时:

System.out.println(TimeZone.getDefault().getDisplayName());

我得到:

Greenwich Mean Time

我想要得到的输出是

Tue Oct 02 01:06:00 GMT 2012

我已经在 df 上尝试过 .setTimeZone 但无济于事。

最佳答案

请注意,Tue Oct 02 02:06:00 BST 2012 与 Tue Oct 02 01:06:00 +0000 2012 是同一时间,只是在不同的时区中表示。 java.util.Date 并不真正处理时区,因此就其而言,没有区别。您构建的 Date 对象表示您想要的正确日期和时间。

Date.toString() 方法本质上只是一个格式化程序,它在其格式设置中使用您的 JRE 默认时区。如果您想测试 Date 对象是否正确,那么您应该构建一个 java.util.Date 对象(使用 java.util.Calendar - 大多数 Date 构造函数已被弃用)进行测试。如果要创建显示字符串,则应使用已创建的 SimpleDateFormatter 实例来格式化 Date 对象。

如果您确实需要一个存储时区信息的对象,那么您应该使用 java.util.Calendarjava.util.Date 几乎已被弃用到无论如何都无法使用的地步。或者,像我一样等待 Java 8 中出现的新数据和时间 API。

关于java - 在 Java 中格式化日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21034766/

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