java - 每个 JDK 版本的时区值都会发生变化

标签 java timezone

当我在同一台机器上编译并运行以下代码语句时,我得到两个不同的时区值。

public class TimeZoneDemo {
   public static void main( String args[] ){

  // create time zone object     
  TimeZone timezone = TimeZone.getDefault();

  // checking time zone value     
  System.out.println(timezone);
   }    
}

JDK 1.6.35

Tue Sep 24 06:25:03 VET 2013
sun.util.calendar.ZoneInfo[id="America/Caracas",offset=-16200000,dstSavings=0,useDaylight=false,transitions=5,lastRule=null]

JDK 1.7.02

Tue Sep 24 22:56:54 MAGT 2013
sun.util.calendar.ZoneInfo[id="Asia/Magadan",offset=43200000,dstSavings=0,useDaylight=false,transitions=66,lastRule=null]

操作系统: Window 7 64 位。

最佳答案

时区是根据 JVM 而不是 JDK 设置的。您可以使用以下命令针对 jvm 设置此值:

Duser.timezone="Europe/Sofia"

如果您将其传递给 JVM,那么当您更改版本时,您将始终拥有相同的时区。

神谕documentation关于 TimeZone.getDefault() 提到...

Gets the default TimeZone for this host. The source of the default TimeZone may vary with implementation.

关于java - 每个 JDK 版本的时区值都会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18979861/

相关文章:

go - 为什么 time.In() 不能在时区 America/New_York 中得到正确的时间

java - Joda Time LocalDate(Object instant, DateTimeZone zone) 构造函数的用途

ios - secondsFromGMT 在设备和模拟器上返回不同的值

java - 如何使用 NetBeans 处理通过 Java 中的 New JFrame 创建的框架?

用于在循环内分配/取消分配内存的 Java 垃圾收集器性能

java - 使用 Java 从数据库中读取 UDT 的最佳方法是什么?

java - 我怎样才能把它移到另一个类(class)

c# - 从服务器端在 HttpRequest 中查找时区

Python pytz 与 DST 的问题

java - 从另一个类访问变量