JDK8新增的时间

本文介绍了Java8中的时间处理类,如LocalDate、LocalTime、LocalDateTime、ZoneId、ZonedDateTime、Instant和DateTimeFormatter,以及它们各自的功能、操作方法和应用场景,强调了线程安全性和时间精度控制。
摘要由CSDN通过智能技术生成

设计更合理,功能更丰富,使用更方便,都是不可变的对象,修改后会返回新的事件对象不会丢失最开始的时间,线程安全,能精确到毫秒、纳秒。

这三个类都有一个静态方法now():获取系统当前时间对应的该对象:

1. LocalDate:代表本地日期

加就是plusYears、plusMonths。。。以此类推

减就是minusYears、minusMonths。。。以此类推

LocalDate ld = LocalDate.of(year,month,dayOfMonth); 获取指定日期的LocalDate对象

判断2个日期对象是否相等,在前还是在后:equals()  isBefore()  isAfter()

2. LocalTime:代表本地时间

也有比较相等和在前在后,用法相同

 

3. LocalDateTime:代表本地日期、时间

可以把LocalDate转换成上面两个对象

LocalDate ld = ldt.toLocalDate();

LocalTime lt = ldt.toLocalTime();

4.ZoneId:获取时区ID

import java.time.Clock;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Test {
    public static void main(String[] args) {
        //世界标准时间(UTC)中国标准时间:+8
        ZoneId z = ZoneId.systemDefault();  //获取系统默认的时区
        System.out.println(z.getId());
        //获取Java支持的全部时区ID
        System.out.println(ZoneId.getAvailableZoneIds());
        //ZonedDateTime
        ZoneId zoneId1 = ZoneId.of("America/New_York");
        ZonedDateTime now = ZonedDateTime.now(zoneId1);
        System.out.println(now);
        //获得世界标准时间
        System.out.println(ZonedDateTime.now(Clock.systemUTC())); //如果不传参数就是系统默认时间
        

    }
}

5.Instant 时间线上的某个时刻/时间戳

通过获取Instant的对象可以拿到此刻的时间,该时间由两部分组成,总秒数和纳秒数

Instant对象的作用:性能分析或记录操作时间表

6.DateTimeFormatter:格式化器,用于时间的格式化和解析,线程安全

格式化时间还有另一种方法:可以用   LocalDateTime对象.format(格式化器)

//解析时间:解析时间一般使用LocalDateTime提供的解析方法来解析
        String dateStr = "2029年12月12日 12:12:11";
        System.out.println(LocalDateTime.parse(dateStr, df)); //第一个参数String 第二个参数解析器

7.Period(一段时期)

可以用于计算来年各个LocalDate对象相差的年数、月数、天数

import java.time.LocalDate;
import java.time.Period;

public class Test2 {
    public static void main(String[] args) {
        LocalDate a1 = LocalDate.of(2029,8,1);
        LocalDate a2 = LocalDate.of(2023,8,9);
        //1.创建Period对象,封装两个日期对象
        Period p =Period.between(a1,a2);
        System.out.println(p.getYears()); // -5
        System.out.println(p.getMonths()); // -11
        System.out.println(p.getDays()); // -23
        
        
    }
}

8、Duration(持续时间)

可以用于计算两个时间对象相差的天数、小时数、分数、秒数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何仙鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值