Java8 新特性 - Instant 时间戳类

1.说明

Instant 类  是Java8 中补充的一个 时间戳类。
相较于 System.currentTimeMillis()获取到【毫秒】,Instant 可以更为精确的获取到【纳秒】。
Instant 可以使用静态方法 now() 或者 of() 方法来创建一个实例对象。(案例代码中会有体现)
Instant 类的常用API 就是获取时间戳了
 * Instant 类的 getEpochSecond() : 获取的是秒
 * Instant 类的 toEpochMilli() : 获取的是毫秒,同 System.currentTimeMillis()
 * Instant 类的 getNano() : 获取的是纳秒,更精确了
同时,Instant 类还是 Java8 中 提供的新的 日期时间类LocalDateTime 与 原来的 java.util.Date 类之间转换的桥梁。

2.该类的具体使用案例代码

package com.northcastle.K_Date;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;

/**
 * Instant 类 :存储了一个从1970-01-01 00:00:00 以来的 秒 和 纳秒 数据
 * 实际上就是一个时间戳类
 * System.currentTimeMillis() : 获取的是毫秒
 *
 * Instant 类的 getEpochSecond() : 获取的是秒
 * Instant 类的 toEpochMilli() : 获取的是毫秒,同 System.currentTimeMillis()
 * Instant 类的 getNano() : 获取的是纳秒,更精确了
 *
 */
public class InstantTest {
    public static void main(String[] args) {
        //1.获取当前时间的Instant对象
        Instant now01 = Instant.now();
        System.out.println(now01);
        System.out.println("纪元秒 : "+now01.getEpochSecond());
        System.out.println("时间戳 : "+System.currentTimeMillis());
        System.out.println("毫  秒 : "+now01.toEpochMilli());
        System.out.println("纳  秒 : "+now01.getNano());

        System.out.println("===========================");

        // 2.获取指定时间的Instant对象
        Instant instant01 = Instant.ofEpochSecond(100);
        System.out.println(instant01);
        System.out.println("纪元秒 : "+instant01.getEpochSecond());
        System.out.println("毫  秒 : "+instant01.toEpochMilli());
        System.out.println("纳  秒 : "+instant01.getNano());
        System.out.println("===========================");

        //3.指定时间戳创建 带时区的日期时间对象 ZoneDateTime
        Instant instant02 = Instant.ofEpochSecond(1647784071); // 2022-03-20 21:47:51
        ZonedDateTime zonedDateTime = instant02.atZone(ZoneId.of("Asia/Shanghai"));
        System.out.println("zonedDateTime = " + zonedDateTime);
        System.out.println("===========================");

        // 4.指定时间戳创建  默认时区的日期时间对象 LocalDateTime
        Instant instant03 = Instant.ofEpochSecond(1647784071); // 2022-03-20 21:47:51
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant03, ZoneId.systemDefault());
        System.out.println("localDateTime = " + localDateTime);
        System.out.println("===========================");

    }
}

在这里插入图片描述

3.日期时间与时间戳之间的转换关系图

转换关系中涉及到了 LocalDateLocalDateTimeZoneDateTimeInstantDate 之间的相互转换。
具体的转换操作可以参考博客 : Java8新特性 - LocalDate、LocalDateTime、ZoneDateTime 与 Date 的相互转换
此博客也为本人所做,详细整理了各种情况下的转换案例。

在这里插入图片描述

4.完成

Congratulations!
You are one step closer to success!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值