java.util.concurrent.TimeUnit减去日期

时间:2014-07-13 18:57:53

标签: java date datetime simpledateformat

好的,这很简单,但似乎做了一些我不明白的事情。我想要做的是获得一个时间,例如下午12:30,以及超时,比如说下午1点,并计算它们之间的小时数。由于某种原因,它给了我10个小时的差异(设置时间与打卡和超时打卡,这两个都是日期字符串)。我想知道我是否可以格式化日期错误?这是代码:

public void getDailyHours(){
    for (Employee e : employees){
        try {

            Date date1 = new SimpleDateFormat("MMM DD, YYYY HH:mm:ss a",          Locale.ENGLISH).parse(e.getPunchIn());
            Date date2 = new SimpleDateFormat("MMM DD, YYYY HH:mm:ss a", Locale.ENGLISH).parse(e.getPunchOut());
            long diff = date1.getTime() - date2.getTime();
            long diffHours = TimeUnit.MILLISECONDS.toHours(diff);
            e.setDailyHours(diffHours);

        } catch (ParseException ex) {
            Logger.getLogger(EmployeeArray.class.getName()).log(Level.SEVERE, null, ex);
        }


        }


}

1 个答案:

答案 0 :(得分:0)

变化

MMM DD, YYYY HH:mm:ss a

MMM dd, yyyy hh:mm:ss a

假设您的String输入类似于

 Jan 21, 2014 10:12:12 AM

查看