Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取两个日期时间之间的秒差_Java_Localdate - Fatal编程技术网

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
(在本例中这是合理的),我建议在施法之前进行边界检查。