2017-02-23 141 views
-1

謝謝。ParseException:無法解析的日期異常

系統默認的區域設置差異。

SimpleDateFormat sdf = new SimpleDateFormat(「MMM d,yyyy h:mm:ss a」,Locale.ENGLISH);

得到解決。

字符串到日期的錯誤

字符串:Feb 13, 2017 10:25:43 AM

SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy h:mm:ss a"); 

MMM d, yyyy h:mm:ss aMMM d, yyyy hh:mm:ss aMMM dd, yyyy h:mm:ss aMMM dd, yyyy hh:mm:ss aMMM dd, yyyy H:mm:ss aMMM dd, yyyy HH:mm:ss a ...等

ParseException的:::: :無法解析日期:「2017年2月13日上午10點25分43秒」

plz help。

+3

正如您可以看到的[在IdeOne.com上的實時代碼中](http://ideone.com/B9SzGo)。投票結束**這個問題不可重複**。雖然你應該使用java.time類而不是這些麻煩的舊的遺留日期時間類。 –

+0

這裏沒有問題 – MadProgrammer

+0

系統的默認語言環境是什麼? –

回答

-3

試試這個。

Date dNow = new Date(); 
      SimpleDateFormat ft = new SimpleDateFormat(
        "E yyyy.MM.dd 'at' hh:mm:ss a zzz"); 

      System.out.println("Current Date: " + ft.format(dNow)); 
      String CurrentTime = ft.format(dNow); 
+2

**無關答案**。該問題是關於*解析*字符串,而不是*生成*字符串。 –

0

TL;博士

LocalDateTime.parse( 
    "Feb 13, 2017 10:25:43 AM" , 
    DateTimeFormatter.ofPattern("MMM d, uuuu hh:mm:ss a" , Locale.US) 
) 

2017-02-13T10:25:43

java.time

您正在使用舊麻煩日期時間類現在是遺留的,取代了java.time類。

指定格式模式以匹配您的輸入。請注意,我們通過Locale來指定在翻譯月份名稱等時使用的人類語言和文化規範。

String input = "Feb 13, 2017 10:25:43 AM" ; 
DateTimeFormatter f = DateTimeFormatter.ofPattern("MMM d, uuuu hh:mm:ss a" , Locale.US) ; 

您的輸入字符串缺少時區或UTC偏移的任何指示符。因此解析爲LocalDateTime

LocalDateTime ldt = LocalDateTime.parse(input , f ); 

ldt.toString():2017-02-13T10:25:43

順便說一句,如果你的輸入已經在一年後有一個逗號,你可能會使用解析一個自動本地化的格式化程序,而不是難以定義格式化模式。這個逗號顯然是美國的常態(至少)。

String input = "Feb 13, 2017, 10:25:43 AM" ; // With a comma after year, apparently the norm in the United States. 
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).withLocale(Locale.US) 
LocalDateTime ldt = LocalDateTime.parse(input , f ); 

關於java.time

java.time框架是建立在Java 8和更高版本。這些類代替了日期時間類legacy,如java.util.Date,Calendar,& SimpleDateFormat

Joda-Time項目,現在在maintenance mode,建議遷移到java.time類。請參閱Oracle Tutorial。並搜索堆棧溢出了很多例子和解釋。規格是JSR 310

您可以直接使用數據庫交換java.time對象。使用符合JDBC 4.2或更高版本的JDBC driver。無需字符串,不需要java.sql.*類。

從何處獲取java.time類?

ThreeTen-Extra項目與其他類擴展java.time。這個項目是未來可能增加java.time的一個試驗場。您可以在這裏找到一些有用的類,如Interval,YearWeek,YearQuartermore

相關問題