2014-12-30 39 views
2

在我正在處理的Web應用程序上,我以Tue Dec 30 14:28:38 CET 2014的格式檢索日期,格式爲String 。我想解析它到Java8 LocalDateTime。下面是我嘗試的總結:java.time.format.DateTimeParseException:Text'Tue Dec 30 14:28:38 CET 2014''could not be parsed at index 0

String string = "Tue Dec 30 14:28:38 CET 2014"; 
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy"); 
LocalDateTime localDateTime = LocalDateTime.parse(string, formatter); 

然而,它拋出以下異常:

java.time.format.DateTimeParseException:文本 '週二12月30日14時28分38秒CET 2014'無法在索引0解析

這是如何引起的,我該如何解決它?

+0

使用'SimpleDateFormat' –

+0

同樣的錯誤... java.text.ParseException:Unparseable date:「Tue Dec 30 14:52:47 CET 2014」 – user3490546

+0

使用此模式'EEE MMM dd HH:mm:ss z yyyy'可能是這個應該工作 –

回答

2

可能該日期對當前語言無效。月份和日期縮寫從一個Locale變爲另一個。

檢查下面的例子:ideone demo

public static void main (String[] args) { 
    String string = "Tue Dec 30 14:28:38 CET 2014"; 
    try { 
     new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH).parse(string); 
     System.out.println("OK ENGLISH"); 
    } catch (Exception ex) { 
     System.out.println("KO ENGLISH"); 
    } 

    try { 
     new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.GERMAN).parse(string); 
     System.out.println("OK GERMAN"); 
    } catch (Exception ex) { 
     System.out.println("KO GERMAN"); 
    } 
} 

String使用Locale.ENGLISH但不與Locale.GERMAN(因爲它應該是"Di Dez 30 14:28:38 CET 2014")解析這是確定的。

如果您未指定Locale,則使用默認值。

+0

thx,現在它的工作原理!現場是問題! – user3490546

相關問題