2016-11-23 43 views
-2

我偶然发现了以下的想法,想知道你的意见:JVM在哪里获取日期并打印?

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
Date date = new Date(); 
System.out.println(dateFormat.format(date)); 

如果用户的计算机设置为一个错误的日期,这是否是打印出错误的日期。 JVM从何处捕获日期?如何确保日期始终正确打印,即使最终用户已调整日期?

+6

它使用系统的日期是的,如果你修改它,JVM没有办法告诉它不是好的:) – Berger

+2

''new Date()''设置时间戳的内部值为''System.currentTimeMillis()' '。 – f1sh

+4

用户自己的设定时间_is_是正确的时间,因为那是他们正在使用的时间。如果你不在线,并且你的电脑时间必须手动设置,你会如何确定一个“正确”的时间? – Rogue

回答

1

JVM将捕获来自系统的日期。如果设置不正确,它会给你不正确的时间。不过,如果你想有正确的时间安排,你可以使用任何REST API,根据你的时区从互联网上选择正确的日期和时间。

您可以从TimeZone

2

的Java获得免费的API依赖于系统时钟,因此,如果用户错误地配置自己的时间,时区,日期等是什么,你会看到的。

话说回来,如果你的代码可以假定的因特网连接,你也许可以使用一些java NTP implementation连接到互联网的时间服务器,并得到正确的时间。

在这里看到更多信息 - How to use an Internet time server to get the time?

如果你不要求的精确度是NTP的优惠,想简单的东西,你可以打起来的任何数量的服务时间休息的API - here is one

+0

oracle数据库的sysdate怎么样? –

+0

@RPenumaka - 按照该文档(https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions172.htm) - “返回操作系统设置的当前日期和时间在其上的数据库驻留”。基本上没有任何基础架构服务过程可以总是假定一个正常工作的互联网连接,所以他们都会选择OS时钟。 – radai