我有 LocalDateTime
并希望利用 ISO_LOCAL_DATE_TIME
常量仅打印到分钟。
两个测试用例都失败:
Expected :2020-10-10T15:16
Actual :2020-10-10T15:16:00
但为什么呢?
assertEquals("2020-10-10T15:16", LocalDateTime.parse("2020-10-10T15:16:17")
.truncatedTo(ChronoUnit.MINUTES)
.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
assertEquals("2020-10-10T15:16", DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(
LocalDateTime.parse("2020-10-10T15:16:17").truncatedTo(ChronoUnit.MINUTES)));
除此之外:使用第一种或第二种方法格式化 LocalDateTime
价值?
2条答案
按热度按时间eh57zj3b1#
使用自定义格式化程序,
ISO_LOCAL_DATE_TIME
将始终使用00
因为该日期格式指定应包括秒(0是日期时间中秒字段的值)。这应该管用
pu82cl6c2#
您的用例不需要格式化程序
这个
LocalDateTime#toString
默认情况下,如果“秒”和“纳米”字段为零,则忽略它们。使用的格式将是最短的,输出的时间,其中省略部分暗示为零的完整值。
LocalDateTime#truncatedTo(ChronoUnit.MINUTES)
将“分之二”(second of minute)和“秒之纳米”(nano of second)字段设置为零。截断返回原始日期时间的副本,其中字段小于指定的单位设置为零。例如,以分钟为单位进行截断会将“秒”和“纳米”字段设置为零。
因此,您的用例不需要格式化程序。
演示:
输出: