java - 在 Java 中构建 TimeZone 对象

标签 java timezone dst

我使用 GMT-8、GMT、PST、EST 等时区字符串构建 Java 时区对象。 这没有考虑时区是否启用了夏令时。现在需要包括此检查,而不是将输入作为 PDT 或 EDT,夏令时作为单独的标志给出。我不确定 TimeZone 是否有更改该 TimeZone 的夏令时属性的直接方法。

因此,如果我得到像 PST 和 DaylightSaving 这样的输入为真,那么我必须将字符串更改为 PDT。更糟糕的是有时我会得到像 GMT-8 或 GMT-6 这样的输入,日光标志为真或错误的。有出路吗?

我不能使用第三方时区相关类

代码示例:

TimeZone  timeZone = TimeZone.getTimeZone("EST");
TimeZone  timeZone = TimeZone.getTimeZone("PST");
TimeZone  timeZone = TimeZone.getTimeZone("GMT-8");

最佳答案

像“PST”和“GMT-8”这样的时区字符串通常是模棱两可的,而且通常不会告诉您夏令时规则是否生效。 (例如,“PST”表示“太平洋标准时间”和“巴基斯坦标准时间”。)

如果您想获得正确的时区和夏令时规则,您必须使用完整的时区名称来获取 TimeZone 对象;即形式的名称:“America/Los_Angeles”。

或者使用 ISO 8601 date / time values .

Have to change lots of codes and its little difficult to convince others to get approvals.

好吧,我会说你在这里别无选择......如果你想让你的代码获得正确的时区等。

做一些研究,了解问题,解释你的老板/客户的问题,让他们在无法正确获取夏令时的应用程序和使用更合理的日期格式的应用程序之间做出选择和时区指定方法。

关于java - 在 Java 中构建 TimeZone 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4506333/

相关文章:

java - JAVA中是否可以有多个URL连接?

java - 使用 xlts 进行 xml 转换,按字母顺序排列

java - 从单独的线程通知Observer update()后,Java swing GUI组件未显示

datetime - 转换时区时注意夏令时

sql - PostgreSQL:将间隔添加到不同时区的时间戳

Java将一个数组放入另一个数组中

go - 如何将时区设置为现有时间戳而不重新解释它?

python - 为什么 %z 不被 python 的 strptime 支持?

ruby-on-rails - 如何将时间移动(而不是转换)到新时区?

ios - 如何在 Xcode 中以编程方式获取夏令时设置?