请考虑此格式化当前日期的程序,并尝试再次解析它。它用法语成功,但英语失败,我不明白为什么。日期解析成功使用法语但英语失败
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