java找出由两个长历元值表示的两个日期之间的差异
我需要的是,我有一个Long值,它代表自epoch以来的毫秒值。我想知道那天和今天的天数有什么不同。
我正在使用Java8的DAYS.between(inputDate, currentDate)
对于当前日期,我使用了LocalDateTime currentDate = LocalDateTime.now();
但我面临的问题是,当我将long值转换为java8 LocalDateTime时。当我使用
LocalDate date = Instant.ofEpochMilli(1490372528)
.atZone(ZoneId.systemDefault())
.toLocalDate();
结果是1970-01-18
,而当我在https://www.epochconverter.com/中输入相同的值时,它给出Fri, 24 Mar 2017 16:22:08 GMT
为什么会出现这种差异?如何有效地从长值中获取java8日期,以便在几天内使用。在()之间
# 1 楼答案
你必须做出决定。你的数字要么是你在问题中所说的“自历元以来的毫秒值”,要么是链接网站上所说(并使用)的“自1970年1月1日以来经过的秒数”
如果它真的是“从纪元开始的毫秒”,那么可以使用
打印天数,顺便说一句,这并不比Java 8之前的代码简单
如果您的数字实际上是“从纪元算起的秒数”,那么代码中几乎没有什么可以更改的
这相当于
正如你明确提到的
DAYS.between
。它只会委托给上面使用的until
方法。相当于Java 8之前的代码会稍微复杂一些