gpt4 book ai didi

java - 从两个 Date 对象计算持续时间的错误时间(以分钟为单位)

转载 作者:行者123 更新时间:2023-11-29 07:56:13 24 4
gpt4 key购买 nike

我正在尝试以分钟为单位计算两个日期对象之间的持续时间。

我在研究过程中从 this 中找到了一些灵​​感计算器问题。一般来说,这似乎是正确的,但我在一个测试用例中遇到了一个有趣的行为。

当我运行下面附加的源代码(您可以简单地复制它)时,它返回 66 分钟而不是(正确结果)6,我目前不明白为什么。也许我现在正在监督一些事情,你能告诉我它是什么吗?

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Test {

private SimpleDateFormat parserSDF = new SimpleDateFormat("MM/dd/yy HH:mm",
Locale.ENGLISH);

public static void main(String[] args) {
Test test = new Test();
Date begin = test.createDateFromString("10/25/09 1:54");
Date end = test.createDateFromString("10/25/09 2:00");

int duration = test.minutesDiff(begin, end);
//result is 66
System.out.println(duration);
}

public int minutesDiff(Date earlierDate, Date laterDate) {
if (earlierDate == null || laterDate == null)
return 0;

return (int) ((laterDate.getTime() / 60000) - (earlierDate.getTime() / 60000));
}

public Date createDateFromString(String dateString) {
Date date = null;
try {
date = parserSDF.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}

顺便说一句,我知道存在这个 Joda 库,它在计算这些东西方面做得更好,但如果可能的话,我希望没有外部库。

感谢您与我分享的每一个想法。

编辑:啊啊啊,这有可能是因为时钟改变了吗?时钟更改时间为 2009 年 10 月 25 日,时间从凌晨 3 点拨回至凌晨 2 点。这可能意味着这个结果是正确的

最佳答案

根据您所在的地区,这似乎是夏令时的结束。 Here's the 2009 table ; 2009 年 10 月 25 日是许多语言环境的结束日期。这可以解释为什么出现 66 而不是 6;有 60 分钟的额外时间。

关于java - 从两个 Date 对象计算持续时间的错误时间(以分钟为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17531862/

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