我想计算2个时间戳变量和hh:mm:ss格式输出之间的持续时间
val start_time = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now)
val sourceFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val start_time_dt = sourceFormat.parse(start_time)
val end_time = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now)
val end_time_dt = sourceFormat.parse(end_time)
我试着这样做:
Duration.between(end_time_dt, start_time_dt)
但我得到以下错误:
found : java.util.Date
required: java.time.temporal.Temporal
5条答案
按热度按时间1hdlvixo1#
你把旧的混合在一起了
java.util.Date
用新的java.time.LocalDateTime
.您还应该注意,您只需要
Formatter
从/到日期和时间的特定文本表示时。因为您发布的代码示例既不读取日期时间String
,也不打印日期和时间String
,我没有在这里包含任何格式。x6492ojm2#
下一步应该为你工作-底线:如果你正在与
java.time
别用它以外的东西,比如java.util.Date
:产生结果:
PT0S: java.time.Duration
斯卡斯蒂:https://scastie.scala-lang.org/o4itydprrdcne5bosjeofwc3frrgcw3#
方法duration.between()不接受时间戳作为参数。您需要做的就是:
mec1mxoz4#
java.time.instant文件
这个
LocalDateTime
类没有定义时间点,因此为它们使用的类是错误的。使用它有时会给你错误的持续时间。使用的好类是Instant
.输出示例:
这个
toXxxPart
方法Duration
我使用的是Java9中介绍的。mznpcxlj5#
根据ivan kurchenko和jwh的评论,下面是我的总结!不确定是否有其他更好的方法以hh:mm:ss格式获取持续时间