Java 获取两个日期时间之间的秒差
如何计算两个日期之间的秒差 我有这个:Java 获取两个日期时间之间的秒差,java,localdate,Java,Localdate,如何计算两个日期之间的秒差 我有这个: LocalDateTime now = LocalDateTime.now(); // current date and time LocalDateTime midnight = now.toLocalDate().atStartOfDay().plusDays(1); //midnight 在这种情况下,时间是:现在2017-09-14T09:49:25.316午夜2017-09-15T00:00 如何计算int second=…? 在这种情况下,我
LocalDateTime now = LocalDateTime.now(); // current date and time
LocalDateTime midnight = now.toLocalDate().atStartOfDay().plusDays(1); //midnight
在这种情况下,时间是:现在2017-09-14T09:49:25.316午夜2017-09-15T00:00
如何计算int second=…?
在这种情况下,我想要返回的结果是51035
我该怎么办
升级已解决
我试试这个:
DateTime now = DateTime.now();
DateTime midnight = now.withTimeAtStartOfDay().plusDays(1);
Seconds seconds = Seconds.secondsBetween(now, midnight);
int diff = seconds.getSeconds();
现在返回整数变量中日期之间的差值(以秒为单位)
感谢所有用户的响应。将它们转换为自历元起的秒数,并比较差异
int seconds = (int) ChronoUnit.SECONDS.between(now, midnight);
LocalDateTime now = LocalDateTime.now();
LocalDateTime tomorrowMidnight = now.toLocalDate().atStartOfDay().plusDays(1);
ZoneId zone = ZoneId.systemDefault();
long nowInSeconds = now.atZone(zone).toEpochSecond();
long tomorrowMidnightInSeconds = tomorrowMidnight.atZone(zone).toEpochSecond();
System.out.println(tomorrowMidnightInSeconds - nowInSeconds);
我会通过epochTime来实现这一点:
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime now = ...;
long epochInSecondsNow = now.atZone(zoneId).toEpochSecond();
LocalDateTime midnight = ...;
long epochInSecondsMidnight = midnight.atZone(zoneId).toEpochSecond();
然后计算差值:
long result = (epochInSecondsMidnight - epochInSecondsNow)
这就是java sorryClean解决方案。实际上比我的更干净。请注意,使用ChronoUnit需要Java8class@MathiasGhys
LocalDateTime
已经是Java8的一部分。between()
返回一个long
。如果你想分配一个int
(在本例中这是合理的),我建议在施法之前进行边界检查。