解决使用SimpleDateFormat解析时间字符串的Locale问题

当使用SimpleDateFormat解析日期字符串时,总是报错.如下:

System.out.println(new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa").parse("02001.July.04 AD 12:08 PM"));

错误信息:

Exception in thread "main" java.text.ParseException: Unparseable date: "02001.July.04 AD 12:08 PM"
	at java.text.DateFormat.parse(DateFormat.java:337)
	at com.test.TestMain.main(TestMain.java:18)

 

后来通过下列语句发现Locale是zh_CN:

System.out.println(Locale.getDefault());

因为当使用当前的模式解析日期时,MMMMM会被解析成中文,aaa也会解析成中文. 所以如果现在是英文的字符串时,必须手动指定Locale,如下:

System.out.println(new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa",Locale.US).parse("02001.July.04 AD 12:08 PM"));

 

可能平时用得多的还是是类似于"yyyy-MM-dd HH:mm:ss SSS" 这样的模式.所以就没有使用指定Locale的API.

 

你可能感兴趣的:(Java)