【发布时间】:2019-03-01 09:42:57
【问题描述】:
我想将yyyy-MM-dd'T'HH:mm:ss 形式的时间戳解析为LocalDateTime。这样做时,如果它们是 00,它会删除秒数。
As described here,我需要使用自定义格式化程序
LocalDateTime date = LocalDateTime.parse("2008-10-02T12:30:00");
DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
String dateString = date.toString();
String dateFormatted = date.format(f);
System.out.println(dateString); // 2008-10-02T12:30
这个可行,但它返回一个String:
System.out.println(dateFormatted); // 2008-10-02T12:30:00
当我将字符串解析为LocalDateTime 时,它会再次剥离00:
LocalDateTime dateLDT = LocalDateTime.parse(dateFormatted, f);
System.out.println(dateLDT); // 2008-10-02T12:30
那么如何将日期解析为LocalDateTime,而不是String,并在末尾保留00?
【问题讨论】:
-
需要解析
dateFormatted,问题出在哪里?您不能解析LocalDateTime,您只能解析Strings - 而且Strings 必须具有正确的格式。日期如何选择重载其toString方法对您来说并不重要,因为您总是必须使用格式化程序来获得任何正确的格式。 -
我相信
DateTimeFormatterBuilder提供了可选元素,但您需要尝试一下 -
看来你是要打印和解析
dateFormatted,不是dateString -
@ernest_k:请查看我的更新。它再次剥离了 00-es。
-
这无关紧要 - 我重复我已经说过的话:“日期如何选择重载其 toString 方法对你来说并不重要,因为你总是必须使用格式化程序获得任何正确的格式。”
标签: java string date formatting localdate