gpt4 book ai didi

Java:跨越数月的两个日期之间的差异

转载 作者:搜寻专家 更新时间:2023-11-01 01:21:57 25 4
gpt4 key购买 nike

我有以下代码可以成功计算出两天之间的差异(以天、小时、分钟、秒为单位):

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
Date d1 = format.parse(startTime);
Date d2 = format.parse(endTime);
long diff = d2.getTime() - d1.getTime();
long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
long diffHours = diff / (60 * 60 * 1000) % 24;
long diffDays = diff / (24 * 60 * 60 * 1000);
System.out.println("Start: " + startTime);
System.out.println("End: " + endTime);
System.out.println(diffDays + " days, " + diffHours + " hours, " + diffMinutes + " minutes, " + diffSeconds + " seconds");

但是,当日期跨入另一个月时,这不起作用,例如:

Start: 2013-07-31 10:15:01
End: 2013-08-01 11:22:33
-29 days, -22 hours, -52 minutes, -28 seconds

Start: 2013-05-31 10:15:01
End: 2013-08-01 11:22:33
-29 days, -22 hours, -52 minutes, -28 seconds

是否可以智能地跨月并获得准确的时差?我熟悉 Joda,但我想坚持使用标准 Java API,除非没有像 Joda 这样的东西这是不可能的。

最佳答案

虽然您应该将 Joda Time 简单地用作一个好得多的日期/时间 API,但我怀疑问题是实际上只是您错误地解析了值。使用格式字符串:

yyyy-MM-dd HH:mm:ss

... 使用 dd 而不是 DDDD 值是“一年中的某一天”,我怀疑这是令人困惑的事情,基本上完全覆盖了月份部分。查看SimpleDateFormat文档以获取更多详细信息。

您可以通过在解析后打印出 d1d2 来验证错误...

关于Java:跨越数月的两个日期之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18256451/

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