請考慮此格式化當前日期的程序,並嘗試再次解析它。它用法語成功,但英語失敗,我不明白爲什麼。日期解析成功使用法語但英語失敗
import java.util.Locale;
import java.text.DateFormat;
import java.time.Instant;
import java.util.Date;
import java.text.SimpleDateFormat;
public class HelloWorld{
public static void main(String []args){
try{
SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss", Locale.ENGLISH);
DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.DEFAULT, Locale.ENGLISH).parse(formatter.format(new Date()));
System.out.println("English - success");
}catch(Exception ex){
System.out.println(ex);
}
try{
SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss", Locale.FRENCH);
DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.DEFAULT, Locale.FRENCH).parse(formatter.format(new Date()));
System.out.println("French - success");
}catch(Exception ex){
System.out.println(ex);
}
System.out.println(Locale.getDefault());
}
}
輸出:
java.text.ParseException: Unparseable date: "11 Feb 2015 11:09:26"
French -success
en_US
請看http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html#parse%28java.lang.String,%20java.text.ParsePosition%29告訴我,我應該使用模式或其他任何東西了。這種方法是爲了解析沒有模式的String
。
如果您嘗試先用'DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.DEFAULT,Locale.ENGLISH).format'格式化'Date',它是否具有相同樣式,您嘗試解析?也許你會以這種方式找到你的錯誤。 – Zhedar 2015-02-11 11:25:03
你對這個例外感到驚訝嗎?您正在格式化,然後使用不同的格式進行解析。你很幸運,法國默認格式符合該模式。 – xehpuk 2015-02-11 11:38:44