2014/04/11

[java] SimpleDateFormat 語系問題

程式不論怎麼寫,執行後都是 java.text.ParseException
Google 到我都快要翻桌! (╯-_-#)╯~ ┴┴
Exception in thread "main" java.text.ParseException: 
    Unparseable date: "Thu Feb 5 21:00:21 2004"
    at java.text.DateFormat.parse(Unknown Source)
輸入明明是正確的,為何總是報錯,原來是語言環境的問題,網路上大部分人使用的語言是英文,所以一模一樣的程式碼,在中文的語言環境下執行就會報錯。如果要 parse 的格式是英文,可以在生成 SimpleDateFormat 時指定地域為 Locale.US
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd hh:mm:ss yyyy", Locale.US);
String str = "Thu Feb 5 21:00:21 2004";
Date date = sdf.parse(str);

System.out.println(date);
作業系統為中文語言環境時,若沒有另外指定,預設的 Locale 即為中文。
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd hh:mm:ss yyyy");
String str = "星期四 二月 5 21:00:21 2004";
Date date = sdf.parse(str);

System.out.println(date);
兩段程式碼的輸出是一樣的,如下。
Thu Feb 05 21:00:21 CST 2004

沒有留言:

張貼留言