Java 使用SimpleDataFormat将字符串转换为日期
我想将Java 使用SimpleDataFormat将字符串转换为日期,java,string,date,Java,String,Date,我想将字符串转换为日期,但出现以下异常: java.text.ParseException: Unparseable date: "Thu Jan 27 14:47:58 CET 2011" at java.text.DateFormat.parse(DateFormat.java:335) at de.datev.boxi.Main.run(Main.java:36) at com.crystaldecisions.sdk.plugin.desktop.program.
字符串
转换为日期
,但出现以下异常:
java.text.ParseException: Unparseable date: "Thu Jan 27 14:47:58 CET 2011"
at java.text.DateFormat.parse(DateFormat.java:335)
at de.datev.boxi.Main.run(Main.java:36)
at com.crystaldecisions.sdk.plugin.desktop.program.internal.ProgramWrapper.main(ProgramWrapper.java:174)
我应该使用哪些参数将字符串格式化为日期
我的程序看起来像:
try {
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
Date d1 = sdf.parse("Thu Jan 27 14:47:58 CET 2011");
System.out.println(d1);
} catch (ParseException ex) {
ex.printStackTrace();
}
尝试:
new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
尝试:
new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
在Java中解析如此“复杂”的时间戳总是很棘手的。我也有同样的经历
这两种Java在解析您的时区时都有问题
或者更可能的是,默认区域设置与您的时间字符串不匹配,我建议将英语区域设置添加到您的通话中:
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
我总是建议添加这个参数,因为根据执行环境的不同,应用程序可能在某些机器上工作,而在其他机器上失败,这取决于默认的语言环境。在Java中解析这种“复杂”的时间戳总是很棘手的。我也有同样的经历
这两种Java在解析您的时区时都有问题
或者更可能的是,默认区域设置与您的时间字符串不匹配,我建议将英语区域设置添加到您的通话中:
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
我始终建议添加此参数,因为根据执行环境,您的应用程序可能在某些计算机上工作,而在其他计算机上失败,具体取决于默认的区域设置。感谢您的解决方案!感谢您的解决方案!