我的动机是在不关心系统日期的情况下获取当前日期。
答案 0 :(得分:6)
我的建议是,如果你真的不能依赖系统时间就是使用时间服务器。 Apache commons有一个非常有用的客户端,可以帮助解决这个问题。网上有很多例子:
https://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ntp/NTPUDPClient.html
还有许多可用的时间服务器。
不要试图在代码中自己更正日期,这将是脆弱的,如果有人纠正了服务器时间,它将会中断。
明显且更简单的解决方案是纠正服务器上的时间!
答案 1 :(得分:0)
通过互联网访问time server。让您的应用程序联系本地时间服务器以查询当前时间。
或者,在本地网络上设置time server。考虑将该时间服务器计算机放在network’s DMZ中,以便从Internet上的时间服务器获取更新,例如pool.ntp.org project或those provided by the United States federal government (NIST)。
获得具有radio clock连接的USB,用于通过连接到诸如原子钟的时间标准的无线电发射器发送的时间码同步的当前时间的输出。发射机正在世界各地的许多国家广播。
Meinberg Global公司至少提供several such devices。
与上述无线电时钟类似,GPS(Global Positioning System)信号的接收器也可能捕获并转发time signal。或者GALILEO或GLONASS。
在窗口外放置sundial。将webcam附加到相关计算机上。将网络摄像头放在窗口中。编写一个应用程序来解释日历当前图像的时间。
警告:在西雅图不实用。
java.time.Clock
要利用当前时刻的任何供应商,请编写抽象java.time.Clock
类的子类。
您可以将Clock
实现作为参数传递给各种 java.time 方法。例如,Instant.now( clock )
。
Instant instant = Instant.now( yourClockGoesHere ) ;
出于测试目的,请注意Clock
自身Clock
静态提供的offset
替代实施:fixed
,tick
,Date
等。
避免使用最早版本的Java中的旧版日期时间类,例如Calendar
& java.sql.*
。这些麻烦的类完全被 java.time 类取代。
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要library(mondate)
as.yearqtr(dat$DATE)
类。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。