2014-03-30 34 views
2

我想字符串轉換爲日期從當前日期進行比較,並拋出解析異常轉換字符串到日期拋出解析異常

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); 
     try { 
      java.util.Date cookiedate = format.parse("Tue Apr 29 11:40:55 GMT+04:00 2014"); 

      Calendar currentDate = Calendar.getInstance(); 

      String dateNow = format.format(currentDate.getTime()); 
       java.util.Date currDate = format.parse(dateNow); 

      if (currDate.getTime() > cookiedate.getTime()) { 
       return true; 
      } 


     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+5

難道你不認爲你需要改變的SimpleDateFormat? – devnull

回答

2

起初,你應該分析該字符串日期使用EEE MMM dd HH:mm:ss Z yyyy格式,然後再轉換到Date格式yyyy-MM-dd HH:mm:ss如下Date對象...

SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy"); 

    try { 
     Date cookiedate = format.parse("Tue Apr 29 11:40:55 GMT+04:00 2014"); 

     Calendar currentDate = Calendar.getInstance(); 

     format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); 

     cookiedate = format.parse(format.parse(cookiedate)); 

     String dateNow = format.format(currentDate.getTime()); 
     Date currDate = format.parse(dateNow); 

     if (currDate.getTime() > cookiedate.getTime()) { 
      return true; 
     } 


    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
3

在你format"yyyy-MM-dd HH:mm:ss"將匹配日期字符串像"2013-03-30 15:57:00"等你拿一個ParseException

如果你想分析"Tue Apr 29 11:40:55 GMT+04:00 2014",你應該使用"EEE MMM dd HH:mm:ss z yyyy"更改您的代碼

SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US); 
1

我認爲這是很明顯,格式化的日期"Tue Apr 29 11:40:55 GMT+04:00 2014"格式不符"yyyy-MM-dd HH:mm:ss"

如果您使用的格式爲"yyyy-MM-dd HH:mm:ss",則應解析字符串,如2014-03-30 10"59:23

如果你想分析像"Tue Apr 29 11:40:55 GMT+04:00 2014"這樣的字符串,你應該使用像EEE MMM dd HH:mm:ss z yyyy這樣的格式。 (我不知道z,可能應該是Z)。

相關問題