package com.xbb.java.time;
import java.time.*;
import java.time.temporal.ChronoUnit;
import java.util.function.BiFunction;
/**
* LocalDate : 日期
* LocalTime : 时间
* LocalDateTime : 日期+时间
*
* 以上三个类分别都为不可改对象.分别表示使用ISO-8601日历系统的日期,时间.日期和时间.
* 它们提供了简单的日期或时间.并不包含当前的时间信息.也不包含时区相关的信息.
*
* 工具类:
* duration : 计算两个时间之间的间隔
* period : 计算两个日期之间的间隔
*
*/
public class Local_Demo {
public static void main(String[] args) throws Exception{
// localDateTimeForRobot_Demo();
//localDateTimeForPerson_Demo();
duration_Demo();
period_Demo();
}
/**
*
* 机器所识别的
* Instant : 时间戳(以Unit元年19700101000000 -> 到某个时间之间的毫秒值)
*/
public static void localDateTimeForRobot_Demo(){
// 获取以UTC时区为基础,所以这个时间是美国时间.本初子午线时间.
Instant instant1 = Instant.now();
System.out.println(instant1);
// 如果要获取本地时间.需要使用偏移量
OffsetDateTime zdt = instant1.atOffset(ZoneOffset.ofHours(8));
System.out.println(zdt);
// 获取毫秒时间
System.out.println(instant1.toEpochMilli());
}
/**
*
* 人所识别的
* LocalDate,
* LocalTime,
* LocalDateTime
*/
public static void localDateTimeForPerson_Demo(){
// 获取当前日期
LocalDate date = LocalDate.now();
System.out.println(date);
LocalTime time = LocalTime.now();
System.out.println(time);
// 获取当前日期时间
LocalDateTime dateTime = LocalDateTime.now();
System.out.println(dateTime);
// 获取指定日期时间
LocalDateTime dt = LocalDateTime.of(2019,02,22,13,22,44);
System.out.println(dt);
// 年 + 2年
LocalDateTime dateTime1 = LocalDateTime.now().plusYears(2);
System.out.println(dateTime1);
// 月 - 2月
LocalDateTime dateTime2 = LocalDateTime.now().minusMonths(2);
System.out.println(dateTime2);
// 获取年月日单独信息
System.out.println("年 : " + dateTime.getYear());
System.out.println("月 : " + dateTime.getMonthValue());
System.out.println("日 : " + dateTime.getDayOfMonth());
}
/**
* duration : 计算两个时间之间的间隔
*/
public static void duration_Demo() throws Exception{
// 计算两个时间戳之间的间隔
Instant inst1 = Instant.now();
Thread.sleep(3000);
Instant inst2 = Instant.now().plus(2, ChronoUnit.DAYS);
BiFunction<Instant,Instant,Duration> supplier = (x, y)->Duration.between(x,y);
System.out.println(supplier.apply(inst1,inst2).toDays());
}
/**
* period : 计算两个日期之间的间隔
*/
public static void period_Demo() throws Exception{
LocalDate localDate1 = LocalDate.now();
LocalDate localDate2 = LocalDate.now().plusDays(3);
BiFunction<LocalDate,LocalDate,Period> function = (x,y)->Period.between(x,y);
System.out.println(function.apply(localDate1,localDate2).getDays());
// 计算两个日期之间的差距
LocalDate localDate3 = LocalDate.of(1991,05,16);
System.out.println(Period.between(localDate1,localDate3));
}
}
Java8 日期时间新API
最新推荐文章于 2021-02-16 18:51:58 发布