SimpleDateFormat抛出ParseException,错误偏移为0

以下代码有什么问题? 它抛出一个ParseException,错误偏移量为0。

final DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy"); df.parse("Thu Jan 23 14:24:47 2014"); 

如果在构造格式化程序时没有为格式化程序指定Locale ,它将使用您的默认Locale ,这显然不会用英语拼写日期和月份。

因此,为格式化程序指定一个。

 final DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy", Locale.UK); 

你的语言环境是"EN"吗? 如果您使用英文名称作为日期,请确保使用该区域设置

SimpleDateFormat绝对是对语言环境敏感的。 某些字段(如小时和分钟)与区域设置无关。

SimpleDateFormat还支持本地化的日期和时间模式字符串。 在这些字符串中,上述模式字母可以用其他依赖于语言环境的模式字母替换。 SimpleDateFormat不处理模式字母以外的文本本地化; 这取决于class级的客户。

或者,您可以使用本地化友好的DateFormat#getDateInstance()工厂方法,因为:

public SimpleDateFormat(String pattern, Locale locale)

使用给定模式和给定语言环境的默认日期格式符号构造SimpleDateFormat 。 注意:此构造函数可能不支持所有语言环境。 要获得完整覆盖,请使用DateFormat类中的工厂方法。

资料来源: https : //stackoverflow.com/a/5174712/2591612