java - 计算两个瞬间之间的天数、小时数和分钟数

标签 java date time java.time.instant

我有一个像这样格式化的即时文件:

DateTimeFormatter formatter = 
 DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT )
                                 .withLocale( Locale.UK )
                                 .withZone( ZoneId.of("UTC"));

String instant = formatter.format(Instant.now()).toString();

我想计算 Instant 和 Instant.now() 之间的天数、小时数和分钟数(如果可能),例如:
// for days
String daysBetween = Instant.now() - instant;

我可以吗?

最佳答案

计算 , 小时 和/或 分钟两个之间Instant对象:

Instant instant1 = Instant.parse("2019-02-14T18:42:00Z");
Instant instant2 = Instant.parse("2019-04-21T05:25:00Z");

// If you only need one of them
System.out.println(ChronoUnit.DAYS.between(instant1, instant2));    // prints: 65
System.out.println(ChronoUnit.HOURS.between(instant1, instant2));   // prints: 1570
System.out.println(ChronoUnit.MINUTES.between(instant1, instant2)); // prints: 94243

// Or use alternate syntax (it's the same thing)
System.out.println(instant1.until(instant2, ChronoUnit.DAYS));    // prints: 65
System.out.println(instant1.until(instant2, ChronoUnit.HOURS));   // prints: 1570
System.out.println(instant1.until(instant2, ChronoUnit.MINUTES)); // prints: 94243

// Or use Duration
Duration duration = Duration.between(instant1, instant2);
System.out.println(duration.toDays());    // prints: 65
System.out.println(duration.toHours());   // prints: 1570
System.out.println(duration.toMinutes()); // prints: 94243

// In Java 9+, Duration can give them as parts to be used together
System.out.println(duration.toDaysPart());    // prints: 65
System.out.println(duration.toHoursPart());   // prints: 10
System.out.println(duration.toMinutesPart()); // prints: 43

// Or you can calculate the parts yourself, using epoch seconds
long seconds = instant2.getEpochSecond() - instant1.getEpochSecond();
System.out.println(seconds / 86400);     // prints: 65
System.out.println(seconds / 3600 % 24); // prints: 10
System.out.println(seconds / 60 % 60);   // prints: 43

正如你在最后两个中看到的,区别是 65 天 10 小时 43 分钟 对于给定的样本日期。

关于java - 计算两个瞬间之间的天数、小时数和分钟数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55779996/

相关文章:

用于检查时间格式的 JavaScript 正则表达式

performance - 该日期列上的非唯一索引会减慢插入具有相同日期值的 50 万个条目的速度吗?

c - Delphi UDF 函数转 C

android - 在 Android 上测量耗时(重启)

java - 我可以使用 JOptionPane.showConfirmDialog 来显示 JInternalFrame 吗?

mysql - 删除不必要的字符串并更新 MySql 中的日期格式

ruby-on-rails - 显示持续时间(以分钟为单位)到小时

java - 在 Java 中更新 LuceneIndex 条目

java - HTTPS 请求和多线程

java - 我可以在 java MessageFormat 中转义大括号吗?