Java-以分钟为单位的时差 [英] Java - Time difference in minutes

查看:59
本文介绍了Java-以分钟为单位的时差的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了以分钟为单位计算时差的问题.它的工作原理很好,例如计算之间的差异2045和2300.

I have this problem with calculating time difference in minutes. Its working fine with exampples like calculating the difference between 2045 and 2300.

但是当我想计算例如2330(今天)和0245(明天)我得到了错误的答案.下面的代码:

But when I want to calculate the difference between for example 2330 (today) and 0245 (tomorrow) I get a incorrect answer. Code below:

    // This example works
    String dateStart = "2045";
    String dateStop = "2300";

    // This example doesnt work
    //String dateStart = "2330";
    //String dateStop = "0245";

    // Custom date format
    SimpleDateFormat format = new SimpleDateFormat("HHmm");  

    Date d1 = null;
    Date d2 = null;
    try {
        d1 = format.parse(dateStart);
        d2 = format.parse(dateStop);
    } catch (Exception e) {
        e.printStackTrace();
    }    

    long diff = d2.getTime() - d1.getTime();
    long minutes = TimeUnit.MILLISECONDS.toMinutes(diff);                      
    System.out.println("Time in minutes: " + minutes + " minutes.");

预先感谢

推荐答案

这不起作用,因为当您创建一个只有一个时间的新日期时,它假设日期是今天".

This is not working because when you create a new date with just a time in it, it's assuming the day is "today".

您可以做的是:

// This example works
String dateStart = "2045";
String dateStop = "2300";

// This example doesnt work
//String dateStart = "2330";
//String dateStop = "0245";

// Custom date format
SimpleDateFormat format = new SimpleDateFormat("HHmm");  

Date d1 = null;
Date d2 = null;
try {
    d1 = format.parse(dateStart);
    d2 = format.parse(dateStop);
} catch (Exception e) {
    e.printStackTrace();
}

// MY ADDITION TO YOUR CODE STARTS HERE
if(d2.before(d1)){
    Calendar c = Calendar.getInstance(); 
    c.setTime(d2); 
    c.add(Calendar.DATE, 1);
    d2 = c.getTime();
}
// ENDS HERE

long diff = d2.getTime() - d1.getTime();
long minutes = TimeUnit.MILLISECONDS.toMinutes(diff);                      
System.out.println("Time in minutes: " + minutes + " minutes.");

但是您应该考虑使用Java 8的新日期/时间功能或Joda Time.

But you should consider using Java 8 new Date/Time features, or Joda Time.

这篇关于Java-以分钟为单位的时差的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆