【问题标题】:What is the default timezone in java.util.Datejava.util.Date 中的默认时区是什么
【发布时间】:2012-07-05 10:59:09
【问题描述】:

如果我创建一个新的 Date() 对象。它将打印的默认时区是什么。

我的机器在 GMT 运行。我正在创建一个新的 Date() 对象。如果我打印为什么它显示 Thu Jul 05 08:21:05 PKT 2012。它如何将时区作为 PKT ?

【问题讨论】:

  • 可以试试这个链接到stackoverflow.com/q/2891361/1465828
  • 谢谢。但它没有回答我的问题
  • 根据其他语言,我知道它应该是 UTC,因为至少在 Python 和 Objective-C 中,日期是使用这个默认时区存储的。

标签: java date timezone


【解决方案1】:

日期本身没有任何时区。它的toString() 方法使用当前的默认时区返回一个表示这个日期的字符串:

Date date = new Date();

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

TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

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

在我的机器上执行上面的代码会得到以下输出:

sun.util.calendar.ZoneInfo[id="Europe/Paris",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]]
Fri Jul 06 09:24:45 CEST 2012
sun.util.calendar.ZoneInfo[id="UTC",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
Fri Jul 06 07:24:45 UTC 2012

【讨论】:

  • 在 Eclipse 中 java.lang.date 显示一个 cdate.zoneInfo 对象。它可能无法从我的 pov 访问日期具有关联的时区。这在转换到不同的时区时起着至关重要的作用。如果不知道源时区,就不可能进行转换。你能解释一下“没有时区问题”吗?
  • @ThomasS “与时区无关” --> 一方面,文档说:……Date 类旨在反映协调世界时 (UTC)……
【解决方案2】:

实际上,基本日期时间通常与时区无关,它们不存储时区。要使用时区,您可以使用格式化程序、日历等。当然,基本日期必须在默认时区中,无论它可能是什么(通常是 GMT),否则您将无法从基本日期实例创建本地日期。

在您的特定情况下,查看 a) javadocs 和 b) 类本身会有所帮助,因为 JDK 通常与 java.util.Date 的源代码一起分发。根据 javadoc,java.util.Date 类表示自称为“纪元”的标准基准时间(即 1970 年 1 月 1 日 00:00:00 GMT)以来的毫秒数。

如果在您的机器上打印时显示不同的日期,那是因为您的系统将使用您系统的默认时区来打印它。但是,您可以使用任何其他时区自行打印。

【讨论】:

    【解决方案3】:

    如果您在 linux 下运行,系统中的某处有一些神奇的时区文件。对于我的 gentoo 来说,魔法只是创建一个包含内容的文本文件 /etc/timezone

    Europe/Berlin
    

    有趣的是date 一直提供正确的时间和时区 (CEST),但 java 将我发送到 Greenwhich。

    > date
    Thu Sep 18 08:49:14 CEST 2014
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      • 2016-04-16
      • 2014-01-07
      相关资源
      最近更新 更多