Java 我可以直接将该值分配给LocalDateTime吗?
我知道我可以这样分配值:Java 我可以直接将该值分配给LocalDateTime吗?,java,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);
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);
?您可以在下面使用
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");
您的后一个版本更接近:
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它是一个字符串
如果您想在日期和时间之间使用带有下划线(\uuu
)的变量,您仍然需要将其用引号括起来以形成一个字符串,并另外定义一个格式化程序来解析它,如Anish B的回答所示
链接
2019-12-15_15:14:21.629
还是2019-12-15T15:14:21.629
都不是Java中的有效令牌;Java中没有这样的日期文本:(实际上2019-12-15_15
表示一个int
,但这里没有帮助)您的模式是ISO模式,它作为常量存在,但默认情况下由LocalDateTime.parse()使用(无参数)。@JBNizet我认为是变量时间字符串。所以,我给了它。但是我已经更新了我的答案,因为它是默认的。