Java8Period类与Duration类⽤法详解
引⾔
Java 8 中引⼊了两个与⽇期相关的新类:
国家元首Period :基于⽇期值
Duration:基于时间值
119碎尸案
它们最⼤的作⽤就不需要你⾃⼰复杂的计算关于两个年⽉⽇之间的相差的时间或⽇期啦.
茄子焖面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("相差天数="+Days());
Instant
以精度到纳秒记录固定的时间值的Instant,创建⽅式:
Instant instant1 = Instant.par("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 = Hours();//⼩时
long timeMinutes = Minutes();//分钟
long timeMillis = Millis();//毫秒
long timeNanos = Nanos();//纳秒
String timeString = String(); //此持续时间的字符串表⽰形式,使⽤基于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个时间点之间差值的持续时间
llotapelong 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("天数="+Days());
注意这个天数是可以负数,意味着如果开始时间⽐结束时间更后⾯就会得到负数天数