Java筆記:SimpleDateFormat的ParseException

緣由

我有一個「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月份的,且支援JulyJul07三種格式,只是若我們寫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();
  }
 }
}

留言