我需要计算时间戳的剩余时间和当前时间,我使用创建时间戳
new Timestamp(System.currentTimeMillis() + (3600000 * 6)); // +6 hours from now
然后我用比较时间
DateFormatUtils.format(System.currentTimeMillis() - timeStamp.getTime(), "HH:mm");
这给出的问题是16小时:00米,应该是6小时或更短。
新时间戳(System.currentTimeMillis((+(3600000*6((;//+6小时后
永远不要使用Timestamp
类,正如我今天的另一个答案中所讨论的那样。遗留的日期-时间类在几年前被JSR310中定义的现代java.time类所取代。
那行应该是:
Instant then = Instant.now().plus( Duration.ofHours( 6 ) ) ;
使用Duration
类确定运行时间。
Duration d = Duration.between( Instant.now() , then ) ;
比较小时数。
if( d.toHours() > 6 ) { … }
提取零件。
String result = d.toHoursPart() + “h “ + d.toMinutesPart() + "m " ;
顾名思义,DateFormatUtils
用于格式化日期。你想要的是DurationFormatUtils
。你的计算是倒过来的:
long duration = timeStamp.getTime() - System.currentTimeMillis();
String formatted = DurationFormatUtils.formatDuration(duration, "HH:mm");