2014-07-13 164 views
0

好吧,這很簡單,但它似乎在做一些我不明白的事情。我想要做的是在下午12點30分進行暫停,暫停下來,例如下午1點,然後計算這些時間之間的小時數。出於某種原因,它給了我十個小時的時間差(設置時間與衝入和超時,這兩個日期字符串)。我想知道是否可以格式化日期錯誤?這裏是代碼:java.util.concurrent.TimeUnit減去日期

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); 
     } 


     } 


} 
+0

'DD'應'dd'和'HH'應該是由於'A'參考'hh':[DOC](HTTP://文檔。 oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html)併發布輸入字符串 –

+0

好的,謝謝。我無法找到日期類的defaultDate的實際格式。這解決了它。 – user3682269

回答

0

變化

MMM DD, YYYY HH:mm:ss a 

MMM dd, yyyy hh:mm:ss a 

假設你的字符串輸入就像

Jan 21, 2014 10:12:12 AM 

參見