我试图隐藏 Java 中两个 Calendar 对象之间的确切时间量。
这是我目前拥有的代码......
public static Map<TimeUnit, Long> computeDifference(Calendar date1, Calendar date2) {
long diffInMillies = date2.getTimeInMillis() - date1.getTimeInMillis();
//create the list
List<TimeUnit> units = new ArrayList<TimeUnit>();
units.add(TimeUnit.SECONDS);
units.add(TimeUnit.MINUTES);
units.add(TimeUnit.HOURS);
units.add(TimeUnit.DAYS);
Collections.reverse(units);
//create the result map of TimeUnit and difference
Map<TimeUnit,Long> result = new LinkedHashMap<TimeUnit,Long>();
long milliesRest = diffInMillies;
for ( TimeUnit unit : units ) {
//calculate difference in millisecond
long diff = unit.convert(milliesRest,TimeUnit.MILLISECONDS);
long diffInMilliesForUnit = unit.toMillis(diff);
milliesRest = milliesRest - diffInMilliesForUnit;
//put the result in the map
result.put(unit,diff);
}
return result;
}
打印时,输出看起来像这样{DAYS=1, HOURS=10, MINUTES=30, SECONDS=45}输入date1 = 19 August 2019 02:00:00和date2 = 20 August 2019 12:30:45
此方法中可用的最大时间单位是DAYS,但我想找到同时包含月份和年份的内容。我意识到 TimeUnit 与特定的日历日期(而不是 24 小时间隔)没有任何关系,这就是为什么我想知道是否有任何方法可以使用 Calendar 类或类似的东西进行这种转换。我还研究了 ChronoUnit 作为 TimeUnit 的替代品,但由于 TimeUnit 不起作用的相同原因,它不起作用。
会喜欢关于如何合并更大的时间单位的任何建议。谢谢你!
慕神8447489
守候你守候我
相关分类