java - 如何在java中从两次获取分钟

标签 java date time date-format

我正在尝试像下面这样计算两个小时之间的差异

String time1 = "05:00 AM";
String time2 = "06:20 AM";

String format = "HH:mm aa";

SimpleDateFormat sdf = new SimpleDateFormat ( format );

Date dateObj1 = null;
Date dateObj2 = null;
try {
    dateObj1 = sdf.parse ( time1 );
    dateObj2 = sdf.parse ( time2 );
} catch ( ParseException e ) {
    e.printStackTrace ( );
}

long diff = dateObj2.getTime ( ) - dateObj1.getTime ( );
double diffInHours = diff / ( ( double ) 1000 * 60 * 60 );
double diffInMins = ( diffInHours + ( int ) diffInHours ) * 60;

转储到控制台。

System.out.println ( "diff: " + diff );
System.out.println ( "diffInHours: " + diffInHours );
System.out.println ( "diffInMins " + diffInMins );

运行时。

diffInHours 1.3333333333333333
Minutes 139.99999999999997

我想计算两次之间的时间(以分钟为单位),就像在上面的例子中我应该得到 80 分钟,但它给出了一些其他值。

有人能帮我算出两次之间的分钟数吗?

最佳答案

对于 Java 8,它可能看起来像这样:

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("hh:mm a");
LocalTime t1 = LocalTime.parse(time1, fmt);
LocalTime t2 = LocalTime.parse(time2, fmt);
long minutes = ChronoUnit.MINUTES.between(t1, t2); //80

请注意,这不会考虑任何 DST 更改。

关于java - 如何在java中从两次获取分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30257375/

相关文章:

java - 将 View 与中心对齐

javascript - 在 AngularJS + JavaScript 中进行日期比较后将类应用于列

java - OpenCSV 错误的日期格式

r - 按时间间隔创建每月平均值

java - MergeSort 不稳定

java - 返回给定字符串中第一次和最后一次出现 "bread"之间的字符串

java - 用于检查 JVM 参数的 Linux 或 Java 命令

php - PHP日期功能不起作用

java - SimpleDateFormat 返回两个不同的时区

c++ - 从 C++ 中的时间戳中提取日期时间戳