Java筆記:SimpleDateFormat的ParseException
緣由
我有一個「Jul 11 2006」格式的時間字串,想要將它parse進程式中。
從Java Doc中我找到能夠輕易達到功能的方法,就是利用 SimpleDateFormat 來 parse這個字串,然而它卻產生了ParseException,顯然就是不接受我所餵給他的pasre的字串。
程式碼
在文件中的Date and Time Patterns段落,有寫道使用M是可以parse月份的,且支援
在我反覆測試後,我決定再看看Java Doc,撇見含有Locale的建構子,就想到Java Puzzlers,雖然我從來沒有重視過Locale的問題,但是這次就該是Locale的問題,果不其然,設定為英語系後果然就正常運行了(汗)
修正後程式碼
我有一個「Jul 11 2006」格式的時間字串,想要將它parse進程式中。
從Java Doc中我找到能夠輕易達到功能的方法,就是利用 SimpleDateFormat 來 parse這個字串,然而它卻產生了ParseException,顯然就是不接受我所餵給他的pasre的字串。
程式碼
import java.text.*;
import java.util.*;
class test {
public static void main(String[] args) {
String date = "Jul 11 2006";
try {
SimpleDateFormat source =
new SimpleDateFormat("MMM dd yyyy");
System.out.println(source.parse(date));
} catch (Exception e) {
e.printStackTrace();
}
}
}
在文件中的Date and Time Patterns段落,有寫道使用M是可以parse月份的,且支援
July
、Jul
、07三種格式,只是若我們寫1或2個M,就只會當作數字格式,3個以上(含)M之後才會用其他的格式來parse,而程式碼也沒有錯,究竟是怎麼一回事?
在我反覆測試後,我決定再看看Java Doc,撇見含有Locale的建構子,就想到Java Puzzlers,雖然我從來沒有重視過Locale的問題,但是這次就該是Locale的問題,果不其然,設定為英語系後果然就正常運行了(汗)
修正後程式碼
import java.text.*;
import java.util.*;
class test {
public static void main(String[] args) {
String date = "Jul 11 2006";
try {
SimpleDateFormat source =
new SimpleDateFormat("MMM dd yyyy", Locale.ENGLISH);
System.out.println(source.parse(date));
} catch (Exception e) {
e.printStackTrace();
}
}
}
留言