2013-02-21 90 views
0

我想比較java中的兩個日期。雖然以下代碼正常工作,但我想處理可能會在輸入日期的日期格式中進行一些更改的情況。在java日期中忽略任何空格或新行比較

例如,在下面的代碼中,兩個日期的日期格式爲yyyy/mm/dd hh:mm:ss am。但是有時候在輸入日期會有一些額外的空白/換行符,這會導致異常。

java.text.ParseException: Unparseable date: "02/14/2013 
    07:00:00 AM"  

以下是我試圖執行的代碼。

 try 
     { 
      Date date1 = (Date)DATE_FORMAT_yyyy_mm_dd_hh_mm_ss.parse(slaTime); // usually the data comes as 2013/02/03 09:09:09 AM 
      Date date2 = (Date)DATE_FORMAT_yyyy_mm_dd_hh_mm_ss.parse(actualTime);// usually the data comes as 2013/02/03 09:06:09 AM 

      // a error occurs 
      if(date1.before(date2)) 
      { 
       return "True"; 
      } 
      else 
      { 
       return "False"; 
      } 
     } 
     catch (ParseException e) 
     { 
     e.printStackTrace(); 

     } 

如何處理?

+0

什麼是DATE_FORMAT_yyyy_mm_dd_hh_mm_ss?你能提供定義嗎?只是好奇心,你是否用mm來表示monts和minutes? – user902383 2013-02-21 09:20:43

回答

1

一個簡單的解決方法是strip all whitespace from the String版本的日期,你分析它之前。改變你的日期格式不包含任何空格(yyyy/MM/ddhh:mm:ssaaa),並用它來解析被剝離的字符串。

 final DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/ddhh:mm:ssaaa"); 
     final String dateStr = "02/14/2013 07:00:00" + 
           "\n AM"; 
     Date failingDate = dateFormat.parse(dateStr); 
     Date passingDate = dateFormat.parse(dateStr.replaceAll("\\s","")); 
1

對於一年的使用m月份,而不是m的

正確的日期格式將yyyy/MM/dd hh:mm:ss aaa。如果有任何額外的空間或新的行,那麼你必須刪除它,否則它將無法解析你的字符串日期,你應該與格式完全匹配。

我建議你刪除所有空格和換行符,然後解析它。

您可以使用像 - yyyy/MM/ddhh:mm:ssaaa這樣的格式,其中沒有空格。並用空字符串替換所有空間和新行。

Date date = new SimpleDateFormat("yyyy/MM/ddhh:mm:ssaaa").parse("2013/02/1407:00:00AM"); 

和你實際的代碼也能像 -

dateString = dateString.replaceAll("\\s",""); 
SimpleDateFormat("yyyy/MM/ddhh:mm:ssaaa").parse(dateString);