Mil*_*oya 1 java timezone datetime jodatime
TimeZone.setDefault(TimeZone.getTimeZone("GMT-7:00"));
Run Code Online (Sandbox Code Playgroud)
这会处理夏令时时区吗?
或者
仅需要区域名称,例如:“America/Lost_Angeles”?
您可能知道,洛杉矶在一年中的标准时间期间位于偏移量 \xe2\x88\x9208:00 ,在夏令时 (DST) 期间位于偏移量 \xe2\x88\x9207:00 (就像现在)。其他时区在一年中的部分时间或全部时间使用偏移量 -07:00。美洲/菲尼克斯全年使用 -07:00。美国/丹佛标准时间使用 -07:00,夏季使用 -06:00。
\n\nJava 不是思想读者,因此没有机会猜测到 -07:00 您可能指的是这些时区之一或也使用 -07:00 的许多其他时区之一。因此,当您要求 -07:00 时,您全年都会得到 -07:00。
\n\n\n\n\n这会处理夏令时时区吗?
\n
不。
\n\n\n\n\n或者
\n\n只需要区域名称,如:\'America/Los(t)_Angeles\'?
\n
是的。
\n\n我建议您不要使用该类TimeZone。它的设计很糟糕并且已经过时了。而是使用ZoneId现代 Java 日期和时间 API java.time。或者,如果您\xe2\x80\x99已经在使用Joda-Time,那么它DateTimeZone也是一个选项,但Joda-Time项目处于维护模式,不建议用于新代码。
特别是不要\xe2\x80\x99t 使用TimeZone.setDefault(). 这将影响程序的每个部分以及在同一 JVM 中运行的所有其他程序。最好的解决方案是在所有日期时间操作中明确时区,以便您独立于任何默认时区设置。如果由于某种原因您无法执行此操作(也许您现在无法承担对代码库的更改),请在启动程序时从命令行设置默认时区。例如:
java -Duser.timezone=America/Los_Angeles YourJavaMainClass\nRun Code Online (Sandbox Code Playgroud)\n\n链接: tz 数据库时区列表,包括一年中部分或全年使用偏移量 -07:00 的 36 个时区。
\n