Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.util.Date中的默认时区是什么_Java_Date_Timezone - Fatal编程技术网

java.util.Date中的默认时区是什么

java.util.Date中的默认时区是什么,java,date,timezone,Java,Date,Timezone,如果我创建一个新的Date()对象。它将打印的默认时区是什么 我的机器以GMT运行,我正在创建一个新的Date()对象。如果我打印,为什么会显示2012年7月5日星期四08:21:05PKT。它是如何将时区作为PKT的?日期本身没有任何时区。其toString()方法使用当前默认时区返回表示此日期的字符串: Date date = new Date(); System.out.println(TimeZone.getDefault()); System.out.println(date);

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


我的机器以GMT运行,我正在创建一个新的Date()对象。如果我打印,为什么会显示2012年7月5日星期四08:21:05PKT。它是如何将时区作为PKT的?

日期本身没有任何时区。其
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

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

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


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

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

Europe/Berlin
有趣的是,
date
始终提供正确的时间和时区(CEST),但java将我发送到Greenwhich

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

你可以试试这个链接,谢谢。但它并没有回答我的问题。根据其他语言,我知道它应该是UTC,因为至少在Python和Objective-C中,日期是用这个默认时区存储的。它可能无法从我的pov访问,因为日期具有关联的时区。这在转换到不同时区时起着至关重要的作用。如果不知道源时区,就不可能进行转换。你能解释一下“没有时区问题吗?”@ThomasS“没有时区问题”-->首先,文档中说:…Date类旨在反映协调世界时(UTC)…