2011-03-11 75 views
1

我一直在閱讀這個主題的很多帖子,並一直在嘗試代碼示例,但我似乎無法讓我的解析工作。解析日期時間字符串與各種瀏覽器的時區

我的窗體上有一個dijit DateTextBox。我注意到,當在不同的瀏覽器中使用時,我會收到不同的String日期時間。比如今天的日期:

IE8:

Fri Mar 11 00:00:00 MST 2011 

的Mozilla /鉻/ Safari瀏覽器:

Thu Mar 11 2011 00:00:00 GMT-0700 (US Mountain Standard Time) 

歌劇:

Thu Mar 11 2011 00:00:00 GMT-0700 

在我的代碼創建了以下的SimpleDateFormat的:

private final static SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US); 
private final static SimpleDateFormat dateFormat2 = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss zZ (zzzz)", Locale.US); 
private final static SimpleDateFormat dateFormat3 = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss zZ", Locale.US); 

我再試試,後來解析它是這樣的:

  try { 
       calcDate = dateFormat.parse(changeDate); 
      } catch (ParseException e) { 
       try {     
        calcDate = dateFormat2.parse(changeDate); 
       } catch (ParseException e2) { 
        try { 
         calcDate = dateFormat3.parse(changeDate); 
        } catch (ParseException e3) { 
         e3.printStackTrace(); 
        } 
       } 
      } 

到目前爲止,只有IE8正確分析。我創建了一些語句來在解析之前輸出字符串,它看起來像我的格式匹配模式。

我甚至安裝了喬達時庫和嘗試了一些像這樣的例子:

String currentDate = "Sun Mar 29 2009 00:00:00 GMT-0700"; 
    DateTimeFormatter formatter = DateTimeFormat.forPattern("EEE MMM dd yyyy HH:mm:ss zZ"); 
    DateTime myDate = formatter.parseDateTime(currentDate); 

這給我的錯誤「無效的格式..... GMT-0700的格式不正確」

請讓我知道我做錯了什麼。謝謝

回答

0

好了之後再看看這個我想出了一個工作,在上面提到的所有瀏覽器工作。

我改變了我的第二個日期格式

private final static SimpleDateFormat dateFormat2 = new SimpleDateFormat("EEE MMM dd yyyy", Locale.US); 

然後我拿了第15個字符從瀏覽器返回的日期字符串並解析它像這樣:

  try { 
       calcDate = dateFormat.parse(changeDate); 
      } catch (ParseException e) { 
       try { 
        changeDate = changeDate.substring(0, 15);      
        calcDate = dateFormat2.parse(changeDate); 
       } catch (ParseException e2) { 
        e2.printStackTrace(); 
       } 
      } 

它就像它應該。

0

您可能會考慮解析表示客戶端日期的字符串。因此,無論瀏覽器的實現如何,您的服務器都知道它將接收哪種格式。

0

關於你的第二格式,試試這個:

new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'Z (zzzz)")