无法解析的日期:“周中的日期名称”(SimpleDateFormat)

Dam*_*nak 0 java date simpledateformat datetime-parsing

我正在尝试将日期从String转换为Date对象:

String dateString = "Mon, 04 Sep 2017 18:30:28";
String dateFormat = "EEE, dd MMM yyyy HH:mm:ss";
Run Code Online (Sandbox Code Playgroud)

导致以下异常:

java.text.ParseException:无法解析的日期:“2017 年 9 月 4 日星期一 18:30:28”

我尝试了不同的字符串和格式,问题似乎是周的名称('EEE')。没有它可以完美运行。

这也很完美:

String dateString = "04 Sep 2017 18:30:28, Mon";
String dateFormat = "dd MMM yyyy HH:mm:ss, EEE";
Run Code Online (Sandbox Code Playgroud)

Lot*_*har 5

月份和工作日是缩写文本。文本取决于语言,如果您在实例化 SimpleDateFormatter 时不提供特定的区域设置,则会使用系统的区域设置。您的解析失败的原因是工作日而不是月份可能是系统默认语言中月份的缩写名称与英语中的月份缩写名称相同。

下面是一些代码,你应该如何用文本解析日期:

SimpleDateFormat formatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss", Locale.ENGLISH);
formatter.setLenient(false);
ParsePosition pos = new ParsePosition(0);
return formatter.parse(toParse, pos);
Run Code Online (Sandbox Code Playgroud)

toParse被包含的日期作为文本字符串。