Java:从服务器而不是系统时钟获取当前日期和时间

Java:从服务器而不是系统时钟获取当前日期和时间,java,datetime,Java,Datetime,在我的Java程序中,我需要创建当前时刻的一个实例。我用 Date date = new Date(); 这将根据主机的系统时钟提供当前日期和时间。有没有办法从在线服务器获取当前日期和时间?也许是世界时间服务器 我已经看到了,它描述了我想要什么,但恐怕我需要的帮助比那里提供的更多 简而言之,我希望得到一个不依赖于主机系统时钟的日期和时间 谢谢 服务器通常会定期与在线时间服务器同步时间。所以你的服务器时间应该是准确的。如果没有,请联系您的管理员 要获取例如GMT时间,请使用日历和时区类。您可以在

在我的Java程序中,我需要创建当前时刻的一个实例。我用

Date date = new Date();
这将根据主机的系统时钟提供当前日期和时间。有没有办法从在线服务器获取当前日期和时间?也许是世界时间服务器

我已经看到了,它描述了我想要什么,但恐怕我需要的帮助比那里提供的更多

简而言之,我希望得到一个不依赖于主机系统时钟的日期和时间


谢谢

服务器通常会定期与在线时间服务器同步时间。所以你的服务器时间应该是准确的。如果没有,请联系您的管理员


要获取例如GMT时间,请使用日历和时区类。

您可以在

以及一些利用该客户端的示例代码

大约有170行文档化的java代码。

本地网络 如果您的计算机已连接到本地网络,请连接到某台充当可靠服务器的计算机。您可以编写自己的时间服务器

网络时间协议 或者,您也可以使用与大多数现有服务器和客户机实现捆绑在一起的老掉牙的解决方案。有关这方面的更多信息,请参阅

考虑将该时间服务器计算机放入,以便从Internet上的时间服务器(如或)进行更新

互联网 如果您的机器已连接到Internet,请连接到可靠的时间服务器。如上所述,使用自定义协议(如web服务)或使用

这在问题中进行了讨论

另见问题:、和

无线电钟 通过连接到时间标准(如原子钟)的无线电发射机发送的时间码来同步当前时间的输出,以获得一个连接。发射机在全世界许多国家广播

至少,这家公司提供了

全球定位系统 与上面的无线电时钟类似,GPS()信号的接收器也可能捕获并中继信号。或者也许,或者其他

日晷 在窗户外面放一个椅子。将a连接到有问题的计算机。将网络摄像头放置在窗口中。编写一个应用程序,根据日晷的当前图像解释一天中的时间

警告:此解决方案在中不起作用


java.time.Clock
要利用当前的任何供应商,请编写抽象类的子类

您可以将
时钟
实现作为参数传递给各种java.time方法。例如

出于测试目的,请注意可从
时钟
本身静态获得的
时钟
的替代实现:,
偏移量
勾选
,等等

避免使用Java最早版本中遗留的日期时间类,例如
date
&
Calendar
。这些麻烦的类完全被java.time类所取代


关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*

从哪里获得java.time类

  • ,及以后
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 更高版本的Android捆绑包实现了java.time类
    • 对于早期的Android,该项目采用了ThreeTen Backport(如上所述)。看

该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,如、、和。

您可以使用以下代码:

        LocalDate localDate = LocalDate.now();
        int year = localDate.getYear();
        int month = localDate.getMonthValue();
        int date = localDate.getDayOfMonth();

我没有在服务器上运行Java应用程序。这是一个桌面应用程序。你的桌面也可以。至少,默认的windows安装(以及afaik linux系统)与此类似:向上投票选择Sundian,这显然是正确的答案
        LocalDate localDate = LocalDate.now();
        int year = localDate.getYear();
        int month = localDate.getMonthValue();
        int date = localDate.getDayOfMonth();