2012-07-10 226 views
2

日誌(2個不同日期):解析Java的字符串到日期

START TIME BEFORE PARSE: 06/27/2012 09:00 
START TIME AFTER PARSE : Thu Mar 06 09:00:00 EET 2014 


START TIME BEFORE PARSE: 07/06/2012 09:00 
START TIME AFTER PARSE : Thu Jun 07 09:00:00 EEST 2012 

代碼:

DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm"); 
      Date date = sdf.parse(time); 
      System.out.println("TIME BEFORE PARSE: " + time); 
      System.out.println("TIME AFTER PARSE : " + date); 

爲什麼它搞亂了一年?如何讓它工作?

+0

什麼是'時間'? – Nishant 2012-07-10 06:59:01

+0

@Nishant:即時消息登錄日誌 – Jaanus 2012-07-10 06:59:22

+0

它確實搞亂了哪一年?你有這樣的輸出嗎? – 2012-07-10 07:00:01

回答

6

因爲你倒月份與日期:

   dd/MM/yyyy HH:mm 
       06/27/2012 09:00 

沒有第27個月的一年。

+0

好吧,但我想要的是'dd/MM/yyyy HH:mm'格式,我可以以某種方式將其逆轉,就像我試過的一樣嗎? – Jaanus 2012-07-10 07:11:56

2

第一個示例中的月份爲27,這在我知道的任何日曆中都是無效的。 (您可能剛剛得到了錯誤的日/月訂購,無論是在您的輸入或您選擇的格式。)

+0

好的,但我想要的是'dd/MM/yyyy HH:mm'格式,我可以以某種方式將其逆轉,就像我試過的一樣嗎? – Jaanus 2012-07-10 07:12:15

2

您使用格式dd/MM/yyyy解析日期2012年6月27日。我懷疑27是一個月。適當的格式是MM/dd/yyyy。

默認情況下,DateFormat寬鬆,因此將27視爲有效月份:2年+ 3個月,所以最終在2年後的3月結束。

+0

好的,但我想要的是'dd/MM/yyyy HH:mm'格式,我可以以某種方式將其逆轉,就像我試過的一樣嗎? – Jaanus 2012-07-10 07:12:30

+0

你的問題沒有意義:你有一個字符串表示格式爲MM/dd/yyyy的日期。就是這樣,你別無選擇。如果字符串沒有適當的格式,請修正產生此字符串的代碼,而不是解析其代碼的位置。 – 2012-07-10 07:50:42

1
String time = "06/27/2012 09:00"; 
    DateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm"); 
    Date date = sdf.parse(time); 
    System.out.println("TIME BEFORE PARSE: " + time); 
    System.out.println("TIME AFTER PARSE : " + date); 

在你的例子中日期格式是錯誤的。你必須給 「DD/MM/YYYY HH:MM」,這應該是 「MM/DD/YYYY HH:MM」

0

您已經使用了模式DD/MM/YYYY,但您輸入的日期作爲MM/dd/YYYY,造成你這種奇怪的行爲..