gpt4 book ai didi

java - 计算时差错误

转载 作者:行者123 更新时间:2023-12-01 22:24:54 25 4
gpt4 key购买 nike

我正在尝试计算两个日期之间的差异。差异包括剩余天数、小时数、分钟数、秒数。

我正在使用这个方法:

public static void computeDiff(Date date2) {
Date date1 = new Date();
long diffInMillies = date2.getTime() - date1.getTime();

long milliesRest = diffInMillies;

for ( TimeUnit unit : timeUnitsArrayList ) {
long diff = unit.convert(milliesRest, TimeUnit.MILLISECONDS);
long diffInMilliesForUnit = unit.toMillis(diff);
milliesRest -= diffInMilliesForUnit;
result.put(unit, diff);
}
}

/*
TimeUnit = java.util.concurrent.TimeUnit
timeUnitsArrayList = A list with units: DAYS, HOURS, MINUTES, SECONDS
date1 = java.util.Date (date now)
date2 = java.util.Date (a date with time 00:00:00)
*/

我举个例子:如果我想要今天和 2015 年 3 月 20 日之间的差异,差异就可以了(8 天,X 小时,Y 分钟,Z 秒),但如果我选择一个较旧的日期,例如2015 年 4 月 20 日,差异将是 39 天(可以)、X - 1 小时(不可以,因为计算错误)、Y 分钟(可以)、Z 秒(可以)。

是 Java 错误还是我的代码中的错误?因为如果我选择较早的日期,那么时间是可以的,但如果我选择较早的日期,我会得到错误的时间(少一小时)

谢谢

最佳答案

这很可能是切换到夏令时的问题 - 在中欧,更改时间为 3 月 29 日,因此在您所在的时区(无论在哪里)可能会类似,并且会占 1 小时。

关于java - 计算时差错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28981365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com