有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java两个日期之间的时间差

我必须找出两个不同日期之间的时间差 我试试这个:

Date d1 = null;
Date d2 = null;
d1 = format.parse(startDate);
d2 = format.parse(endDate);

long diff = d2.getTime() - d1.getTime();

diffSeconds = diff / 1000 % 60;          
diffMinutes = diff / (60 * 1000) % 60;         
diffHours = diff / (60 * 60 * 1000);

但是当我将{}设置为2017年5月15日23:40:10和{}设置为2017年5月16日00:05:55时

输出为:

diffSeconds = -15;
diffMinutes = -25;
diffHours   = -23;

我怎样才能解决这个问题?多谢各位


共 (1) 个答案

  1. # 1 楼答案

    要么是日期格式错误,要么是切换了开始日期和结束日期

    以下方法非常有效:

    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
    
    String startDate = "15/05/2017 23:40:10";
    String endDate = "16/05/2017 00:05:55";
    
    Date d1 = format.parse(startDate);
    Date d2 = format.parse(endDate);
    
    long diff = d2.getTime() - d1.getTime();
    long diffSeconds = diff / 1000 % 60;
    long diffMinutes = diff / (60 * 1000) % 60;
    long diffHours = diff / (60 * 60 * 1000);
    
    System.out.println(diffHours + " " + diffMinutes + " " + diffSeconds);
    

    输出为:

    0 25 45