主页 > 新闻资讯 > 大数据培训:Java8 Period 类与 Duration 类 用法详解

大数据培训:Java8 Period 类与 Duration 类 用法详解

作者:张老师 浏览次数: 2021-01-27 17:38
作为大数据的主流编程语言,Java在大数据开发当中是重要的基础,而Java的学习,从基础开始逐步上手。今天的大数据培训分享,我们主要来讲讲Java8 Period 类与 Duration 类 用法详解。

大数据培训:Java8 Period 类与 Duration 类 用法详解

Java 8 中引入了两个与日期相关的新类:
  • Period :基于日期值
  • Duration:基于时间值

它们最大的作用就不需要你自己复杂的计算关于两个年月日之间的相差的时间或日期。

Period 类与 Duration 类都是一段持续时间的概念,如果需要对比时间,它们就需要一个固定的时间值,所以就需要 LocalDate 类与 Instant 类来配合它们使用:
  • Period 对应使用 LocalDate ,它们的作用范围域都是日期(年/月/日)
  • Duration 对应使用 Instant,它们的作用范围域都是时间(天/时/分/秒/毫秒/纳秒)

LocalDate

精度到日期记录固定时间值的LocalDate,创建方式:

LocalDate localDate1 = LocalDate.of(2019,9,1);
LocalDate localDate2 = LocalDate.ofYearDay(2019,150);


Period

对比时间

LocalDate start = LocalDate.of(2019,9,25);
LocalDate end = LocalDate.of(2019,9,29);
Period period = Period.between(start, end);
System.out.println("相差天数="+period.getDays());


Instant

以精度到纳秒记录固定的时间值的Instant,创建方式:

Instant instant1 = Instant.parse("2017-10-03T10:15:30.00Z");//用解析字符串的形式创建
Instant instant2 = Instant.ofEpochMilli(System.currentTimeMillis());//用传入单位为毫秒的时间戳创建
Instant instant3 = Instant.ofEpochSecond(System.currentTimeMillis()/1000);//用传入为单位秒的


以上代码都是创建了某个时间点的值

Duration

Duration字面意思是持续时间

设置指定单位的持续时间

Duration durationDays = Duration.ofDays(1);//天
Duration durationHours = Duration.ofHours(1);//小时
Duration durationMinutes = Duration.ofMinutes(1);//分
Duration durationSeconds = Duration.ofSeconds(1);//秒
Duration durationMillis = Duration.ofMillis(1);//毫秒


获取指定单位的持续时间

Duration duration = Duration.ofDays(1);//设置一天时间
long timeHours = duration.toHours();//小时
long timeMinutes = duration.toMinutes();//分钟
long timeMillis = duration.toMillis();//毫秒
long timeNanos = duration.toNanos();//纳秒
String timeString = duration.toString(); //此持续时间的字符串表示形式,使用基于ISO-8601秒*的表示形式,例如 PT8H6M12.345S
System.out.println("timeHours时间="+timeHours);
System.out.println("timeMinutes时间="+timeMinutes);
System.out.println("timeMillis时间="+timeMillis);
System.out.println("timeNanos时间="+timeNanos);
System.out.println("timeString时间="+timeString);


获取2个时间点之间差值的持续时间

long todayTimeMillis = System.currentTimeMillis();
long yesterdayTimeMillis = todayTimeMillis - 24 * 60 * 60 * 1000;
Instant start = Instant.ofEpochMilli(yesterdayTimeMillis);
Instant end = Instant.ofEpochMilli(todayTimeMillis);

Duration duration = Duration.between(start, end);
System.out.println("天数="+duration.toDays());


注意这个天数是可以负数,意味着如果开始时间比结束时间更后面就会得到负数天数。

关于大数据培训,Java8 Period 类与 Duration 类 用法,以上就为大家做了具体的示例介绍了。Java是大数据的重要基础,而学好Java,基础非常重要。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析挖掘,零基础班本月正在招生中,课程大纲及学习视频可联系客服领取!
热点排行
推荐文章
立即申请>>