我可以直接将值分配给LocalDateTime吗?

时间:2019-12-15 13:24:23

标签: java

我知道我可以通过这种方式分配值:

LocalDateTime session = LocalDateTime.of(2017, Month.FEBRUARY, 12, 10, 30);   

但是有一种直接分配值的方法:

LocalDateTime session = LocalDateTime.of(2019-12-15_15:14:21.629);

或者也许:

LocalDateTime session = LocalDateTime.of(2019-12-15T15:14:21.629);

2 个答案:

答案 0 :(得分:1)

您可以在下面使用DateTimeFormatter以这种方式进行操作:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS");
LocalDateTime session = LocalDateTime.parse("2019-12-15T15:14:21.629", formatter);

您可以直接解析LocalDateTime中的字符串。

LocalDateTime session = LocalDateTime.parse("2019-12-15T15:14:21.629");

答案 1 :(得分:1)

您的后一个版本更接近:

    LocalDateTime session = LocalDateTime.parse("2019-12-15T15:14:21.629");
    System.out.println("session: " + session);

输出为:

  

会议:2019-12-15T15:14:21.629

LocalDateTIme和其他java.time类不仅从其toString方法中打印ISO 8601格式。它们还解析与默认格式相同的格式,即没有任何显式格式化程序。日期和时间之间为T的字符串,2019-12-15T15:14:21.629为国际标准ISO 8601格式。只有您需要在Java前后加上双引号,以告诉Java它是一个字符串。

如果您想在日期和时间之间使用带下划线(_)的变体,则仍需要将其包装在引号中以形成字符串,并另外定义格式化程序以对其进行解析,如Anish B回答。

链接