java - 如何仅用分钟格式化 LocalDateTime(截断秒)?
问题描述
我有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
?
解决方案
使用自定义格式化程序,当日期时间被截断为分钟时,ISO_LOCAL_DATE_TIME
将始终使用00
秒,因为该日期格式指定应包含秒(并且 0 是日期时间中秒字段的值)。
这应该工作
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm");
assertEquals("2020-10-10T15:16", LocalDateTime.parse("2020-10-10T15:16:17")
//.truncatedTo(ChronoUnit.MINUTES) <-- not needed with that format
.format(formatter));
推荐阅读
- javascript - Javascript window.open() 返回 null 并在选项卡中打开 - 仅限 Firefox
- ios - 如何以编程方式滚动到 tableViewHeader
- version-control - Mercurial经常留下锁
- c# - 具有 azure 函数和 Web api 的 EF Core 连接字符串设置
- google-sheets - 如何从谷歌表格中获取独特的未知单词列表
- r - 用于数据库连接的 R 函数装饰器
- amazon-eks - 连接到 AWS 上的 kubernetes 仅在通过 eksctl 创建集群时有效
- sql-server - 有条件地在脚本文件中设置 SQLCMD 变量?
- ios - NSArray 元素未能匹配 Swift Array 元素类型 Expected NSMutableArray 但找到 __NSDictionaryI:
- r - 如何将单元格元素转换为列