ChronoUnit实例
java.time.temporal.ChronoUnit是java8中引入的一个枚举类。它被替换为代表天、周等的整数值。它实现了TemporalUnit 接口。
它用于测量Years,Months,Weeks,Days,Hours,Minutes,Seconds,Microseconds,Nanoseconds
的时间,它包含以下常数:
- 纳米级
- 微量级
- 毫秒
- 秒
- 分钟
- 小时
- 半天
- 天数
- 周
- 月
- 年
- 几十年
- 百年
- 千年
- 纪元
- 永远
用例和用法
这可以在日期和时间API中用于计算以下事项
之前的具体时间
之后的具体时间
两个日期之间的天数、年数、月数、小时数、分钟数、秒数,并以单位返回范围。
ChronoUnit示例
我们将看到java.time.temporal.ChronoUnit类的各种使用情况
以秒为单位显示所有的ChronoUnits
这是一个可用的ChronoUnit和它们的测量单位(秒)的例子
for (ChronoUnit unit : ChronoUnit.values()) {
Duration duration=unit.getDuration();
System.out.println(unit+" is of seconds:"+duration.getSeconds());
}
输出是
Nanos is of seconds:0
Micros is of seconds:0
Millis is of seconds:0
Seconds is of seconds:1
Minutes is of seconds:60
Hours is of seconds:3600
HalfDays is of seconds:43200
Days is of seconds:86400
Weeks is of seconds:604800
Months is of seconds:2629746
Years is of seconds:31556952
Decades is of seconds:315569520
Centuries is of seconds:3155695200
Millennia is of seconds:31556952000
Eras is of seconds:31556952000000000
Forever is of seconds:9223372036854775807
这是一个向LocaldateTime添加和减去测量单位的例子。
LocalDateTime now = LocalDateTime.now();
// date time 5 days ago
LocalDateTime localDateTime1 = now.minus(5, ChronoUnit.DAYS);
System.out.println(localDateTime1);
// date time 5 years ago
LocalDateTime localDateTime2 = now.minus(5, ChronoUnit.YEARS);
System.out.println(localDateTime2);
// date time 10 days after
LocalDateTime localDateTime3 = now.plus(5, ChronoUnit.DAYS);
System.out.println(localDateTime3);
// date time 4 months after
LocalDateTime localDateTime4 = now.plus(4, ChronoUnit.MONTHS);
System.out.println(localDateTime4);
上述代码执行的输出是
2018-08-22T23:00:36.011362100
2013-08-27T23:00:36.011362100
2018-09-01T23:00:36.011362100
2018-12-27T23:00:36.011362100
这是一个在两个[LocalDate)(/2018/08/java8-top-10-localdate-examples-with.html) 对象之间寻找年份的例子。
使用ChronoUnit.YEARS.between()方法返回日期之间的年数。
LocalDate dob = LocalDate.of(1980, Month.AUGUST, 24);
LocalDate dateNow = LocalDate.now();
long numerOfYears = ChronoUnit.YEARS.between(dob, dateNow);
System.out.println(numerOfYears);
如何计算两个日期之间的天数?
这是一个寻找两个Localdates之间天数的例子。
ChronoUnit.DAYS.between()方法返回日期之间的天数。
LocalDate dob = LocalDate.of(1980, Month.AUGUST, 24);
LocalDate dateNow = LocalDate.now();
long numberOfDays = ChronoUnit.DAYS.between(dob, dateNow);
System.out.println(numberOfDays);
这是一个查找两个日期之间的微观时间细节的例子。
ChronoUnit.between()方法带有微观细节,给出所有微观时间信息。
LocalDateTime dateTime = LocalDateTime.of(2017, 1, 1, 0, 0);
LocalDateTime dateTime1 = LocalDateTime.now();
System.out.println("Differnce in Nano seconds" + ChronoUnit.NANOS.between(dateTime, dateTime1));
System.out.println("Differnce in Milli seconds" + ChronoUnit.MILLIS.between(dateTime, dateTime1));
System.out.println("Differnce in seconds" + ChronoUnit.SECONDS.between(dateTime, dateTime1));
System.out.println("Differnce in minutes" + ChronoUnit.MINUTES.between(dateTime, dateTime1));
System.out.println("Differnce in hours" + ChronoUnit.HOURS.between(dateTime, dateTime1));
输出是
Differnce in Nano seconds52184462355462300
Differnce in Milli seconds52184462355
Differnce in seconds52184462
Differnce in minutes869741
Differnce in hours14495
同样的例子可以用java.time.Duration
java.time.Duration例子来写**,得到两个日期之间的小时/分钟/秒/毫秒/纳米**。
java.time.Duration.between()方法被用来获取微观时间的细节。
LocalDateTime dateTime = LocalDateTime.of(2017, 1, 1, 0, 0);
LocalDateTime dateTime1 = LocalDateTime.now();
System.out.println("Differnce in Nano seconds" + java.time.Duration.between(dateTime, dateTime1).getNano());
System.out.println("Differnce in Milli seconds" + java.time.Duration.between(dateTime, dateTime1).toMillis());
System.out.println("Differnce in seconds" + java.time.Duration.between(dateTime, dateTime1).getSeconds());
System.out.println("Differnce in minutes" + java.time.Duration.between(dateTime, dateTime1).toMinutes());
System.out.println("Differnce in hours" + java.time.Duration.between(dateTime, dateTime1).toHours());
输出是
Differnce in Nano seconds156614800
Differnce in Milli seconds52183108156
Differnce in seconds52183108
Differnce in minutes869718
Differnce in hours14495