我一直在构建一个应用程序并保存我一直System.currentTimeMillis()
用来以毫秒为单位的时间戳的重要时间信息。我所有的算法都使用这个 ms 数据,并且日期与这个 ms 数据一起保存。缓存的持续时间也被确定,对象日期是从这个毫秒时间戳格式化的。
我不确定这是否是一个好习惯。是不是更好用Calendar.getinstace()
我已经收集到 currentTimeMillis() 可能是一种不好的做法,因为它可能导致时间数据不一致,但我不明白为什么会这样。
我一直在构建一个应用程序并保存我一直System.currentTimeMillis()
用来以毫秒为单位的时间戳的重要时间信息。我所有的算法都使用这个 ms 数据,并且日期与这个 ms 数据一起保存。缓存的持续时间也被确定,对象日期是从这个毫秒时间戳格式化的。
我不确定这是否是一个好习惯。是不是更好用Calendar.getinstace()
我已经收集到 currentTimeMillis() 可能是一种不好的做法,因为它可能导致时间数据不一致,但我不明白为什么会这样。
日历总是不好的做法。
Java 有 3 到 4 个时间 API。按介绍顺序:
java.util.Date
稍后,java.sql.Timestamp
还有日期。这是非常糟糕的 API;在这一点上,这些方法中的几乎所有方法都已被弃用,因为它们具有误导性或直接不做他们建议的事情,并且在任何情况下都是巨大的误称。j.u.Date
代表时间的瞬间,用人类的术语不容易表示。日期基本上是人类的概念。java.time
. 这是一个很好的。这几乎没有什么意外,很复杂,时间最终变得复杂,类型被正确命名,甚至同时具有j.t.Instant
and j.t.ZonedDateTime
,并且您几乎可以表达任何与日期相关的内容。我会说强烈不推荐使用 juDate 或 Calendar。如果您所做的只是及时测量瞬间,请随时使用 System.currentTimeMillis() - 但如果您需要以人类形式打印(例如:“2020 年 7 月 20 日 16:34,这发生了”),改为java.time
改为。如果您愿意,请随意放弃 currentTimeMillis 并j.t.Instant
用于这些目的 - 您的偏好。