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

use*_*253 19 java timezone date

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

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

JB *_*zet 23

日期本身没有任何时区.它的toString()方法使用当前的默认时区返回表示此日期的String:

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);
Run Code Online (Sandbox Code Playgroud)

在我的机器上执行上面的代码导致以下输出:

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
Run Code Online (Sandbox Code Playgroud)


Tom*_*zak 5

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

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

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