下面的unittest在windows机器(java11.0.9)中通过intellij ide执行时失败,但在具有相同java版本的mac或linux机器中执行时通过。
@Test
public void rfc1123JaveTimeUtilParsing(){
final String rfc1123Pattern = "EEE, dd MMM yyyy HH:mm:ss z";
final String responseTimeStamp = "Mon, 14 Dec 2020 20:34:37 GMT";
DateTimeFormatter javaTimeDateTimeFormatter = DateTimeFormatter.ofPattern(rfc1123Pattern);
ZonedDateTime javaFinalTime = ZonedDateTime.parse(responseTimeStamp, javaTimeDateTimeFormatter);
Assert.assertNotNull(javaFinalTime);
}
对于windows,结果是以下异常:
java.time.format.datetimeparseexception:无法在索引0处分析文本“mon,14 dec 2020 20:34:37 gmt”
1条答案
按热度按时间wmomyfyw1#
不要在没有区域设置的情况下使用datetimeformatter。
由于给定的日期时间是英文的,所以您应该使用
DateTimeFormatter
与Locale.ENGLISH
.输出:
默认情况下,
DateTimeFormatter#ofPattern
使用jvm根据主机环境在启动期间设置的默认格式区域设置。我试图通过以下演示来说明这个问题:输出: