未知模式字母:T - 将模式 T 的字符串日期解析为 LocalDateTime

我需要将 String 中的以下日期格式解析为 Java LocalDateTime。


所以我将日期作为字符串获取,如下所示:2019-09-20T12:36:39.359


我有以下单元测试:


@Test

public void testDateTime() {

    assertEquals(SomeObject.getLocalDate(), LocalDateTime.parse(“2019-09-20T12:36:39.359”, DateTimeFormatter.ofPattern("yyyy-MM-ddThh:mm:ss.SSS")));

}

单元测试失败,出现异常:


java.lang.IllegalArgumentException: Unknown pattern letter: T


    at java.time.format.DateTimeFormatterBuilder.parsePattern(DateTimeFormatterBuilder.java:1661)

    at java.time.format.DateTimeFormatterBuilder.appendPattern(DateTimeFormatterBuilder.java:1570)

    at java.time.format.DateTimeFormatter.ofPattern(DateTimeFormatter.java:536)

如何正确解析这种格式的日期LocalDateTime?


红颜莎娜
浏览 86回答 3
3回答

偶然的你

您还可以使用 DateTimeFormatter.ofPattern如下    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.getDefault());    String dateStr = "2019-09-20T12:36:39.359";    LocalDateTime date = LocalDateTime.parse(dateStr, dtf);

BIG阳

您可以用作DateTimeFormatter.ISO_LOCAL_DATE_TIME格式化程序:LocalDateTime.parse("2019-09-20T12:36:39.359", DateTimeFormatter.ISO_LOCAL_DATE_TIME);

江户川乱折腾

您将 aString与 a进行比较Date,这会说它们不相等。您甚至不需要编写DateTimeFormatter.编写这段代码就足够了:assertEquals("2019-09-20T12:36:39.359", LocalDateTime.parse("2019-09-20T12:36:39.359").toString());
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java