2012-04-20 69 views
0

我附上的代碼。在這段代碼中,我使用了一個字符串,它是一個來自平面文本文件的日期。它由AM/PM(12小時格式)組成。當我解析它時,它不能以24小時格式解析。我想要時間差b/w當前時間和文件中的字符串。並且由於AM/PM,它不能以24小時格式轉換。因此無論是PM還是AM都顯示相同的時差。所以,如果你有,請告訴我任何富有成效的建議。我會非常感謝你們。解析字符串日期和時間,但沒有得到適當的解析

公共類鑄件{

/** 
* @param args 
*/ 
    static FileReader fw; 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     try{ 
      fw = new FileReader("E://796F_log.txt"); 
      BufferedReader pw =new BufferedReader(fw); 
      String last_Line_From_File="" ; 

      for (String message = pw.readLine(); message != null ; message = pw.readLine()) { 
        last_Line_From_File = message; 
      } 

      String[] array_Of_Data = last_Line_From_File.split("\\s") ; 
      String time = array_Of_Data[0]+" "+array_Of_Data[1]+" "+array_Of_Data[2] ; 

      System.out.println(time); 
      DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss a"); 
      Calendar cal = Calendar.getInstance(); 
      String current_time = dateFormat.format(cal.getTime()); 

      Date d1 = dateFormat.parse(time); 
      Date d2 = dateFormat.parse(current_time); 



      long total_time = d2.getTime()-d1.getTime(); 
      total_time /= 1000 ; 

      System.out.println("current time "+d2.getHours()+":"+d2.getMinutes()+":"+d2.getSeconds()+"\n"+d1.getHours()+":"+d1.getMinutes()+":"+d1.getSeconds()); 
      if(total_time <= 500) 
      { 
       System.out.println("working "+total_time); 
      } 
      else 
       System.out.println("nt working "+total_time); 

     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      System.out.println("did the smart thing or dumb thing"); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }finally 
     { 
      try { 
       fw.close(); 

      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       System.out.println("we did attempt closing"); 

      } 

     } 
    } 

}

+0

請提供輸入和輸出字符串....以便我們可以跟蹤錯誤.... – aProgrammer 2012-04-20 06:25:56

+0

快速提示:您的問題會更清晰*沒有*所有的文件處理代碼,但*帶* a輸入樣本。您也不應該在'日期'內使用棄用的方法。 – 2012-04-20 06:27:17

回答

3

的問題是您的格式:

"MM/dd/yyyy HH:mm:ss a" 

HH這裏指24小時值。因此,它預計晚上7點會有「19」。這幾乎是總是在同一個格式字符串中包含「HH」和「a」(AM/PM指示符)是錯誤的。

你可能想要麼

"MM/dd/yyyy hh:mm:ss a" 

"MM/dd/yyyy h:mm:ss a" 

取決於你是否把事情就像 「上午7時00分○○秒」 或 「7:00:00點」。順便說一句,如果你正在做大量的日期/時間工作,我推薦使用Joda Time而不是Date/Calendar

+0

thnx很多我被困在這個問題...最後3天... thnx一噸 – 2012-04-20 09:28:47