- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 Java 8,
在我们的代码的前面,我们使用 sdf.setTimeZone(TimeZone.getTimeZone("PDT"));
转换为失败的美国太平洋地区(没有抛出任何错误,但转换为默认时区) 由于 PDT 不是有效的 ZoneId。
所以我寻找 setTimeZone(TimeZone.getTimeZone("PST"));
,它在 TimeZone.getAvailableIDs()
值中也不可用。
最后我使用了 sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
现在,我们的一位 friend 使用 setTimeZone(TimeZone.getTimeZone("PST"));
转换为美国太平洋时区,并且转换正常进行。
问题是,
TimeZone.getTimeZone("PST");
和 TimeZone.getTimeZone("America/Los_Angeles"); 之间有什么区别?
哪个更好用?
最佳答案
引用 Error Prone's ThreeLetterTimeZoneID check 的文档:
According to the Javadoc of
java.util.TimeZone
:For compatibility with JDK 1.1.x, some other three-letter time zone IDs (such as “PST”, “CTT”, “AST”) are also supported. However, their use is deprecated because the same abbreviation is often used for multiple time zones (for example, “CST” could be U.S. “Central Standard Time” and “China Standard Time”), and the Java platform can then only recognize one of them.
除了时区之间的歧义外, 返回时区遵守夏令时, 这意味着获得的 TimeZone 可能不是您所期望的。例子 包括:
DateTime.getTimeZone("PST")
遵守夏令时; 但是,标识符暗示它是太平洋标准时间,即 不遵守夏令时。DateTime.getTimeZone("EST")
(以及"MST"
和"HST"
)不遵守夏令时。然而, 这与 PST(和其他)不一致,因此您可能认为 将遵守夏令时。
因此:使用完整的America/Los_Angeles
格式来最小化代码中的歧义。
关于java - TimeZone.getTimeZone ("PST") 与 TimeZone.getTimeZone ("America/Los_Angeles"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55627607/
System.setProperty("user.timezone", "America/Chicago"); TimeZone.setDefault(TimeZone.getTimeZone("美国
尝试解析带有详细时区的日期: var sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); sdf.parse("2022-09-02 02:30:
我的应用在尝试解析美国/芝加哥时区的日期时遇到问题。我已经回顾了一堆其他的 ParseException 问题,并且我认为我已经了解了 Java 中日期解析的所有常见陷阱。以下代码适用于我遇到的所有其
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Weird timezone issue with pytz 这似乎是错误的: >>> import pyt
这个问题已经有答案了: How to add timezone into a naive datetime instance in python [duplicate] (2 个回答) 已关闭 8 年
我在使用 moment-timezone 和 America/Sao_Paulo 尝试解析具有 America/Sao_Paulo 偏移量的日期时遇到错误。我创建了这段代码: const date =
我有一个从我的服务器发送的以毫秒为单位的时间戳 ( Unix time / time from Epoch ),它使用 Joda-time 并且始终使用恒定时区“America/New_York”。在
如何通过此类查询 MySQL 并在每次查询后设置 time_zone?我对于在以下代码块中放置时区命令的位置遇到一些麻烦: class MyDB { private $connection;
我想在 Java 中解析以下字符串并将其转换为日期: DTSTART;TZID=America/Los_Angeles:20140423T120000 我试过这个: SimpleDateFormat
谁能告诉我,以下两种说法有什么区别: TimeZone.getTimeZone("America/New_York") 和 TimeZone.getTimeZone("EST") 换句话说,为什么 E
我有这段代码在 SQL 中运行良好。但是我想使用不同的时区格式,例如 'America/New_York' 而不是 'US Eastern Standard Time' SELECT TODATETI
我的日历对象有问题,它没有显示美国/圣地亚哥时区 DST(每日节省时间)的正确偏移量:我的示例代码: TimeZone fromTimeZone = TimeZone.getTimeZone("美国/
有没有办法使用 moment.js 或 moment-timezone 设置时区始终反射(reflect)“美国/纽约”,无论用户从何处访问应用程序? 我已经尝试过此操作,但对象的时区反射(refle
我在尝试获取位置“America/Punta_Arenas”的时区时遇到异常。我正在使用 joda LocalDateTime。 import org.joda.time.{DateTime, Dat
这是我的代码 package main import ( "fmt" "time" ) func main() { tz := "America/New_York" loc, err
我编写了一个函数,以 HH:MM A 格式返回 PST/PDT 中的当前时间(例如上午 12:04) function getTimeStr() { var currentTime = momen
代码: console.log(start) 读取,2018 年 3 月 1 日星期四 00:00:00 GMT+0530(印度标准时间) 我想要一个新对象 start_NY ,它将读取 Thu Ma
我有一个桌面应用程序(必须在 Windows 中运行),它需要在执行特定操作时记录时间戳,但是我在调用日历时得到的时间带有错误的时间和正确的时区。 运行一些测试,我发现如果我取消选中 Window
我从我的 vendor 那里得到一个时间戳,它是美国中部时间但没有夏令时。我需要使用 DST(如果适用)将其转换为 America/New_York。 我尝试只使用常规 JavaScript,然后转向
从服务器收到的日期是 UTC 时区,我需要将其转换为特定时区,例如:America/New_York。以下是相同的代码 但是在这样做时我得到了以下错误: Moment Timezone has
我是一名优秀的程序员,十分优秀!