两个时间之间的分钟差异

4

我看过一些使用Joda Time和其他方法来计算两个日期之间的毫秒差的示例,但是如何将它们应用于仅获取两个时间之间的分钟差呢?例如,下午2:45和上午11:00之间的差为225分钟。


1
抱歉,我认为我的问题没有那么清楚。我想知道如何以分钟为单位获取两个时间之间的差异,而不是两个日期。 - user2704743
3个回答

12

你可以通过观察得出数学计算方法,一分钟有六十秒,一秒有一千毫秒,所以一分钟等于60*1000 毫秒。

如果你将毫秒数除以 60,000,那么秒数就会被截断。你应该将数字除以 1000 来截断毫秒,然后用 n % 60 表示秒数,用 n / 60 表示分钟数:

Date d1 = ...
Date d2 = ...
long diffMs = d1.getTime() - d2.getTime();
long diffSec = diffMs / 1000;
long min = diffSec / 60;
long sec = diffSec % 60;
System.out.println("The difference is "+min+" minutes and "+sec+" seconds.");

我知道这一点,我只是想知道如何在第一时间获取两个时间之间的实际差异,而不是2个日期。 - user2704743
d1会被输入为一个字符串,例如0225吗?它也是以24小时制显示的吗? - user2704743
@d1和@d2不是字符串,它们是java.util.Date对象。有不同的方法可以输入它们,具体取决于当地环境。查找“Java日期解析”以查看您可以输入这些日期的格式。还可以查找Java日历来了解另一个制作日期的选项。 - Sergey Kalinichenko

4
使用 JodaTime,您可以执行以下操作以获取精确分钟数。
public static void main(String[] args) throws Exception {   //Read user input into the array
    long time = System.currentTimeMillis(); // current time
    DateTime time1 = new DateTime(time);
    DateTime time2 = new DateTime(time + 120_000); // add 2 minutes for example
    Minutes minutes = Minutes.minutesBetween(time1, time2);
    System.out.println(minutes.getMinutes()); // prints 2
}

Minutes.minutesBetween() 方法接受一个 ReadableInstant 参数,该参数不一定是一个 DateTime 对象。


1
要将毫秒转换为分钟,请除以60000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接