【问题标题】:How to get today's date in java if system date is one year back of current date?如果系统日期比当前日期早一年,如何在 java 中获取今天的日期?
【发布时间】:2017-05-11 20:47:54
【问题描述】:

我的动机是获取当前日期而不关心系统日期。

【问题讨论】:

  • @Daniel 它不是重复的。如果系统日期设置为无效日期(如 1 年前),OP 正在询问如何获取正确的日期。
  • 您有哪些来源可以询问正确的时间?
  • 可能是从您的数据库中获取日期(我在这里看到 sql-server 标记)

标签: java


【解决方案1】:

我的建议,如果你真的不能依赖系统时间,那就使用时间服务器。 Apache commons 有一个非常有用的客户端,可以帮助解决这个问题。网上有很多例子:

https://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ntp/NTPUDPClient.html

还有许多可用的时间服务器。

不要试图自己在代码中更正日期,这将是脆弱的,并且如果有人更正服务器时间会破坏。

显而易见且更简单的解决方案是更正服务器上的时间!

【讨论】:

    【解决方案2】:

    时间服务器

    通过互联网访问time server。让您的应用程序联系该本地时间服务器以查询当前时间。

    或者,在您的本地网络上设置time server。考虑将时间服务器计算机放在network’s DMZ 中,以便从 Internet 上的时间服务器(例如 pool.ntp.org projectthose provided by the United States federal government (NIST))获取更新。

    无线电时钟

    通过USB 连接获得radio clock 以输出当前时间,该时间代码由连接到时间标准(如原子钟)的无线电发射器发送的时间码同步。发射机正在世界各地的许多国家广播。

    Meinberg Global 公司至少提供several such devices

    全球定位系统

    与上面的无线电时钟类似,GPS (Global Positioning System) 信号的接收器也可能捕获并转发time signal。或者GALILEOGLONASS

    日晷

    sundial 定位在窗外。将webcam 附加到相关计算机。将网络摄像头放置在窗口中。编写一个应用程序来根据日晷的当前图像解释一天中的时间。

    警告:在西雅图不实用。


    java.time.Clock

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

    您可以将Clock 实现作为参数传递给各种java.time 方法。例如,Instant.now( clock )

    Instant instant = Instant.now( yourClockGoesHere ) ;
    

    出于测试目的,请注意Clock 的替代实现可从Clock 本身静态获得:fixedoffsettick 等。

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


    关于java.time

    java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.DateCalendarSimpleDateFormat

    Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。

    要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310

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

    从哪里获得 java.time 类?

    ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可以在这里找到一些有用的类,例如IntervalYearWeekYearQuartermore

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多