ChronoUnit枚举类教程与实例

437 阅读3分钟

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