在我的Java程序中,我需要创建当前时刻的实例.我用
Date date = new Date();
Run Code Online (Sandbox Code Playgroud)
这根据主机的系统时钟给出了当前日期和时间.有什么方法可以从在线服务器获取当前日期和时间吗?也许是世界时间服务器?
我看过这篇文章,它描述了我想要的东西,但我担心我需要的帮助比那里提供的更多.
简而言之,我想获得一个不依赖于主机系统时钟的日期和时间.
谢谢!
您可以查看可用的Java NTP客户端演示
http://www.docjar.com/html/api/examples/ntp/NTPClient.java.html
以及一些利用此客户端的示例代码
http://www.docjar.com/html/api/examples/ntp/TimeClient.java.html
这是大约170行记录良好的java代码.
如果您的计算机连接到本地网络,请连接到充当可信赖时间服务器的某些计算机。您可以编写自己的时间服务器。
或者你可以用陈腐的网络时间协议(NTP)与大多数捆绑任何现有的服务器和客户端实现OS。有关更多信息,请参见aioobe接受的答案。
考虑将时间服务器计算机放置在网络的DMZ中,以便从Internet上的时间服务器(例如pool.ntp.org项目或美国联邦政府(NIST)提供的时间服务器)进行更新。
如果您的计算机已连接到Internet,请连接到可信赖的时间服务器。如上所述,请使用自定义协议(例如Web服务)或NTP。
在“ 如何使我的Java应用程序从某个在线时钟获取全球时间 ”问题中对此进行了讨论。
另请参阅问题:Java NTP客户端和时间服务器的Java客户端,例如网络时间协议(NTP)。
获取带有USB连接的无线电时钟,以输出当前时间,该时间由连接到时间标准(例如原子钟)的无线电发射器发射的时间码同步。发射机正在世界许多国家广播。
该Meinberg全球公司,至少,提供了几个这样的设备。
与上面的无线电时钟类似,GPS(全球定位系统)信号的接收器也可能捕获并中继时间信号。也许还有GALILEO,GLONASS或其他卫星无线电导航服务。

将日d放在窗户外面。将网络摄像头连接到有问题的计算机。将网络摄像头放在窗口中。编写一个应用程序,以根据日d的当前图像解释一天中的时间。
警告:此解决方案在Seattle中不起作用。
java.time.Clock为了利用当前的这些供应商中的任何一个,编写抽象java.time.Clock类的子类。
您可以将Clock实现作为参数传递给各种java.time方法。例如,Instant.now( clock )。
Instant instant = Instant.now( yourClockGoesHere ) ;
Run Code Online (Sandbox Code Playgroud)
出于测试目的,注意的可选的实施方式Clock从现有的静态Clock本身:fixed,offset,tick,和更多。
避免使用最早的Java版本(例如Date&)中的遗留日期时间类Calendar。这些麻烦的类完全被java.time类所取代。
该java.time框架是建立在Java 8和更高版本。这些类取代麻烦的老传统日期时间类,如java.util.Date,Calendar,和SimpleDateFormat。
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
要了解更多信息,请参见Oracle教程。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。
您可以直接与数据库交换java.time对象。使用与JDBC 4.2或更高版本兼容的JDBC驱动程序。不需要字符串,不需要类。java.sql.*
在哪里获取java.time类?
该ThreeTen-额外项目与其他类扩展java.time。该项目为将来可能在java.time中添加内容提供了一个试验场。你可能在这里找到一些有用的类,比如Interval,YearWeek,YearQuarter,和更多。