java.util.Date中的默认时区是什么
如果我创建一个新的Date()对象。 它将打印的默认时区是什么。
我的机器在GMT运行。 我正在创建一个新的Date()对象。 如果我打印为什么它显示Thu Jul 05 08:21:05 PKT 2012.如何将时区作为PKT?
日期本身没有任何时区。 它的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);
在我的机器上执行上面的代码导致以下输出:
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
如果你在linux下运行,系统中的某个地方会有一些神奇的时区文件。 对于我的gentoo,魔术只是创建一个包含内容的文本文件/ etc / timezone
Europe/Berlin
有趣的是, date
始终给出了正确的时间和时区(CEST),但是java把我发给了Greenwhich。
> date Thu Sep 18 08:49:14 CEST 2014
实际上,基本日期时间通常与时区无关,它们不存储时区。 要使用时区,请使用格式化程序,日历等。 当然,基本日期必须在默认时区,无论它是什么(通常是GMT),否则您将无法从基本日期实例创建本地日期。
在您的特定情况下,它将有助于查看a)javadocs和b)到类本身,因为JDK通常与java.util.Date的源代码一起分发。 根据javadoc,java.util.Date类表示自标准基准时间(称为“epoch”)以来的毫秒数,即1970年1月1日00:00:00 GMT。
如果它在您的机器上打印时显示不同的日期,那是因为您的系统将使用系统的时区默认值打印它。 但是,您可以使用任何其他时区自行打印。
- 在方法中重构多个if-else条件
- 找不到类型的反序列化器:错误
- 如何使用actionPerformed(ActionEvent e)多一个按钮?
- 设置Java类路径以加载类文件
- 看似忽略了javax.faces.application.ViewExpiredException
- 使用公钥端点validationJWT签名
- 如何设置Spring Boot来运行HTTPS / HTTP端口
- java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver在java中不再起作用。 如何解决这个问题?
- Spring引导嵌入式容器或war文件在外部容器中进行生产