LocalDateTime:将 String 转换为 HH:mm:ss
LocalDateTime : converting String to HH:mm:ss
我需要做什么:
我需要将 LocalDateTime 对象传递给构造函数,并且我有一个以“18:14:00”为值的字符串。
我的问题:
如何将字符串转换为 LocalDateTime?
我做了什么:
经过一些研究,我放了这个但是没有用:
LocalDateTime.parse("18:14:00", DateTimeFormatter.ofPattern("HH:mm:ss"));
java.time.format.DateTimeParseException: Text '18:14:00' could not be
parsed: Unable to obtain LocalDateTime from TemporalAccessor: {},ISO
resolved to 18:14 of type java.time.format.Parsed
您有时间组件,而不是日期组件。所以你能做的最好的(用你拥有的)是使用 LocalTime
(而不是 LocalDateTime
)。喜欢,
LocalTime lt = LocalTime.parse("18:14:00", DateTimeFormatter.ofPattern("HH:mm:ss"));
"Unable to obtain LocalDateTime"异常是因为解析的文本只有time值,没有date 值,所以不可能构造一个 Local Date Time 对象。
改为解析为 LocalTime
:
LocalTime time = LocalTime.parse("18:14:00");
System.out.println(dateTime); // Prints: 18:14
"HH:mm:ss"
模式是 LocalTime
的默认模式,因此无需指定(参见:DateTimeFormatter.ISO_LOCAL_TIME
)。
如果您 want/need 一个 LocalDateTime
object, parsed similarly to how SimpleDateFormat
做到了,即默认 1970 年 1 月 1 日,那么您需要明确指定默认日期值:
DateTimeFormatter fmt = new DateTimeFormatterBuilder()
.append(DateTimeFormatter.ISO_LOCAL_TIME)
.parseDefaulting(ChronoField.EPOCH_DAY, 0)
.toFormatter();
LocalDateTime dateTime = LocalDateTime.parse("18:14:00", fmt);
System.out.println(dateTime); // Prints: 1970-01-01T18:14
为了比较,这相当于旧的 SimpleDateFormat
结果:
Date date = new SimpleDateFormat("HH:mm:ss").parse("18:14:00");
System.out.println(date); // Prints: Thu Jan 01 18:14:00 EST 1970
我需要做什么:
我需要将 LocalDateTime 对象传递给构造函数,并且我有一个以“18:14:00”为值的字符串。
我的问题:
如何将字符串转换为 LocalDateTime?
我做了什么:
经过一些研究,我放了这个但是没有用:
LocalDateTime.parse("18:14:00", DateTimeFormatter.ofPattern("HH:mm:ss"));
java.time.format.DateTimeParseException: Text '18:14:00' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {},ISO resolved to 18:14 of type java.time.format.Parsed
您有时间组件,而不是日期组件。所以你能做的最好的(用你拥有的)是使用 LocalTime
(而不是 LocalDateTime
)。喜欢,
LocalTime lt = LocalTime.parse("18:14:00", DateTimeFormatter.ofPattern("HH:mm:ss"));
"Unable to obtain LocalDateTime"异常是因为解析的文本只有time值,没有date 值,所以不可能构造一个 Local Date Time 对象。
改为解析为 LocalTime
:
LocalTime time = LocalTime.parse("18:14:00");
System.out.println(dateTime); // Prints: 18:14
"HH:mm:ss"
模式是 LocalTime
的默认模式,因此无需指定(参见:DateTimeFormatter.ISO_LOCAL_TIME
)。
如果您 want/need 一个 LocalDateTime
object, parsed similarly to how SimpleDateFormat
做到了,即默认 1970 年 1 月 1 日,那么您需要明确指定默认日期值:
DateTimeFormatter fmt = new DateTimeFormatterBuilder()
.append(DateTimeFormatter.ISO_LOCAL_TIME)
.parseDefaulting(ChronoField.EPOCH_DAY, 0)
.toFormatter();
LocalDateTime dateTime = LocalDateTime.parse("18:14:00", fmt);
System.out.println(dateTime); // Prints: 1970-01-01T18:14
为了比较,这相当于旧的 SimpleDateFormat
结果:
Date date = new SimpleDateFormat("HH:mm:ss").parse("18:14:00");
System.out.println(date); // Prints: Thu Jan 01 18:14:00 EST 1970