如何将Date.getTime()转换为小时并计算差额

时间:2018-11-22 02:30:13

标签: java date parsing

我有一个程序,它需要一个“ AM”“ PM”时间并计算出等效的小时数(以24小时格式)。由于某种原因,它解析并计算了我输入的不正确的24小时等效时间(即5:00 pm等于22)

System.out.print("Enter the end time (HH:MM am): ");
endTime = input.nextLine();
Date ETime = time_to_date.parse(endTime);

Class方法

public int get_Family_A_Calulation(Date STime, Date ETime) {
    Date startTimeCalc = STime, endTimeCalc = ETime;
    int pay = 0, hoursWorked, StartHour, EndHour;
    StartHour = ((((int) startTimeCalc.getTime()) / 1000) / 60) / 60;
    EndHour = ((((int) endTimeCalc.getTime()) / 1000) / 60) / 60;
    pay = hoursWorked * 15;
    return pay;
}

我不确定我的错误在哪里,谁能给我有关如何纠正此错误的建议?

2 个答案:

答案 0 :(得分:1)

使用Java8上可用的最新类

LocalDateTime now = LocalDateTime.now();
System.out.println(now.getHour());

答案 1 :(得分:0)

Date后面的实际数据是自该纪元以来的毫秒数。任何小时或时间的表示均基于日历日期部分,并考虑了时区和夏时制。 无论您做什么,都将存在几天的计算问题,等等。 如Scary Wombat所建议,请使用java.time包中的新类。对于您的特定情况,您需要一个LocalTime,因为代码试图表示一个时间元素(小时,分钟,秒等),而不考虑Date,TimeZone等。 https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html