JDK8特性之LocalDateTime

JDK1.8除了新增了lambda表达式、stream流之外,它还新增了全新的日期时间API。
在JDK1.8之前,Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。因此推出了java.time包,该包下的所有类都是不可变类型而且线程安全。

  • LocalDate:本地日期,不包含具体时间, 格式 yyyy-MM-dd。
  • LocalTime:本地时间,不包含日期. 格式 yyyy-MM-dd HH:mm:ss.SSS 。
  • LocalDateTime:组合了日期和时间,但不包含时差和时区信息。

LocalDateTime代码示例:
LocalDate\LocalTime\LocalDateTime的使用

public class LocalDateTimeDemo {
    public static void main(String[] args) {
        //本地日期,不包括时分秒
        LocalDate nowDate = LocalDate.now();
        //本地日期,包括时分秒
        LocalDateTime nowDateTime = LocalDateTime.now();
        System.out.println("当前是:" + nowDate);
        System.out.println("当前是:" + nowDateTime);
        //当前是:2020-10-12
        //当前是:2020-10-12T14:03:12.829

        System.out.println("当前年:" + nowDateTime.getYear());
        System.out.println("当前年份天数:" + nowDateTime.getDayOfYear());
        System.out.println("当前月:" + nowDateTime.getMonthValue());
        System.out.println("当前时:" + nowDateTime.getHour());
        System.out.println("当前分:" + nowDateTime.getMinute());
        System.out.println("当前时间:" + nowDateTime.toString());
        //当前年:2020
        //当前年份天数:286
        //当前月:10
        //当前时:14
        //当前分:7
        //当前时间:2020-10-12T14:07:53.685

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
        LocalDateTime ldt = LocalDateTime.now();
        System.out.println("格式化时间:" + ldt.format(formatter));
        //格式化时间:2020-10-12 14:10:51.062

        LocalDate ld1 = LocalDate.parse("2017-11-17");
        LocalDate ld2 = LocalDate.parse("2018-01-05");
        Period period = Period.between(ld1, ld2);
        System.out.println("相差年:" + period.getYears() + "相差月:" + period.getMonths() + "相差天:" + period.getDays());
        System.out.println("相差月份:" + ChronoUnit.MONTHS.between(ld1,ld2));
        System.out.println("相差总天数:" + ChronoUnit.DAYS.between(ld1,ld2));
        //相差年:0相差月:1相差天:19
        //相差月份:1
        //相差总天数:49

        LocalDateTime ldt1 = LocalDateTime.now();
        LocalDateTime ldt2 = ldt1.plusMinutes(10);
        System.out.println("当前时间是否大于:" + ldt1.isAfter(ldt2));
        System.out.println("当前时间是否小于:" + ldt1.isAfter(ldt2));
        //当前时间是否大于:false
        //当前时间是否小于:false

        Clock clock = Clock.systemUTC();
        System.out.println("当前时间戳:" + clock.millis());
        Clock clock2 = Clock.system(ZoneId.of("Asia/Shanghai"));
        System.out.println("亚洲上海此时的时间戳:" + clock2.millis());
        Clock clock3 = Clock.system(ZoneId.of("America/New_York"));
        System.out.println("美洲纽约此时的时间戳:" + clock3.millis());
        //当前时间戳:1602483959576
        //亚洲上海此时的时间戳:1602483959576
        //美洲纽约此时的时间戳:1602483959580
    }
}
//        LocalDate today = LocalDate.now();
//        LocalDate pre = today.minus(1, ChronoUnit.YEARS);
//        System.out.println("1----" + pre);
//        LocalDate pre2 = today.minusYears(1);
//        System.out.println("2----" + pre2);
//
//        LocalDate today2 = LocalDate.of(2021,3,30);
//        LocalDate preMonth = today2.minus(1, ChronoUnit.MONTHS);
//        System.out.println("1----" + preMonth);
//        LocalDate pre2Month = today2.minusMonths(1);
//        System.out.println("2----" + pre2Month);

在此记录jdk1.8中时间的用法,后续加强练习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值