java SimpleDataFormat.parse(“周二,2021年4月27日18:00:00&”x2B;0200“导致ParseException”;“不可解析日期”为什么?

java SimpleDataFormat.parse(“周二,2021年4月27日18:00:00&”x2B;0200“导致ParseException”;“不可解析日期”为什么?,java,date,parsing,timezone,simpledateformat,Java,Date,Parsing,Timezone,Simpledateformat,我试图把一个字符串解析成一个日期。 老实说,这很简单,应该马上就能用,但显然我太笨了 这就是我试图解析的内容 Date mdate=new SimpleDateFormat(“EEE,dd-MMM-yyy-HH:mm:ss-ZZZZ”).parse(“2021年4月27日星期二18:00:00+0200”); 或者反过来说: Date mdate=new SimpleDateFormat(“EEE,dd-MMM-yyy-HH:mm:ss Z”).parse(“2021年4月27日星期二18:0

我试图把一个字符串解析成一个日期。 老实说,这很简单,应该马上就能用,但显然我太笨了

这就是我试图解析的内容

Date mdate=new SimpleDateFormat(“EEE,dd-MMM-yyy-HH:mm:ss-ZZZZ”).parse(“2021年4月27日星期二18:00:00+0200”);
或者反过来说:

Date mdate=new SimpleDateFormat(“EEE,dd-MMM-yyy-HH:mm:ss Z”).parse(“2021年4月27日星期二18:00:00+0200”);
它总是导致ParseException“不可解析的日期”

有人能告诉我这不起作用的原因吗? 提前谢谢

编辑: 解决方案:

Im在一台德国机器上,因此无法解析英文格式的字符串。为了实现这一点,SimpleDataFormat需要一个区域设置作为第二个参数

Date mdate=new SimpleDateFormat(“EEE,dd-MMM-yyy-HH:mm:ss-ZZZZ”,Locale.ENGLISH)。解析(“2021年4月27日星期二18:00:00+0200”);
注意:
SimpleDataFormat已弃用,应替换为DateTimeFormatter。

不要再使用过时的
SimpleDataFormat
。使用现代
java.time
APIuse
Locale.US
中的
DateTimeFormatter
作为
SimpleDateFormat
的第二个参数。这应该help@Jens虽然你的两个评论都是建设性的,但它们也相互矛盾。我建议OP不要使用
SimpleDataFormat
,因此也不要传递任何第二个参数
SimpleDataFormat
是一个臭名昭著的类麻烦制造者,幸运的是它早已过时。此外,该格式内置于java.time(现代java日期和时间API)中。我们所需要的就是OffsetDateTime.parse(“Tue,2021年4月27日18:00:00+0200”,DateTimeFormatter.RFC_1123_DATE_TIME)(收益率
2021-04-27T18:00+02:00
)。非常感谢,当然还有其他问题。但我没能找到他们。。。我想是互联网的诅咒吧。所以你是对的,我需要一个Locale.US或Locale.ENGLISH作为第二个参数。。。我将尝试用现代的等价物替换SimpleDataFormat。非常感谢!你是对的,你遇到的问题并不是你能找到答案的问题。