Instant 瞬时
Instant:时间线上的一个瞬时点。( 可能被用来记录应用程序中的事件时间戳 )
- 在处理时间和日期的时候,我们通常会想到,面向人类的( 年、月、日、时、分、秒)这只是时间的一个模型。
- 第二种,通用模型时面向机器的,或者说是连续的。此模型种,时间线中的一个点表示为一个很大的输,这样有利于计算机处理。在UNIX中,这个数从1970年开始,以秒为单位;同样,在Java中,也是从1970年开始,但以毫秒为单位;
- java.time包通过值类型 Instant 提供机器视图,不提供处理人类意义上的时间单位。Instant表示时间线上的一点,而不需要任何上下文信息,例如,时区。概念上讲,它只是简单的表示自1970年1月1日0时0分0秒(UTC)开始的秒数。因为 java.time 包是基于纳秒计算的。
/* Instant 类似于Date类 */ @Test public void test2(){ //now():本初子午线对应的标准时间 Instant instant = Instant.now(); System.out.println(instant);//2021-09-22T01:35:26.908Z //添加偏移量 OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8)); System.out.println(offsetDateTime);//2021-09-22T09:43:48.653+08:00 //toEpochMilli():获取自1970年1月1日0时0分0秒(UTC)开始的秒数 --getTime() long milli = instant.toEpochMilli(); System.out.println(milli);//1632275028653 //ofEpochMilli():通过给定的毫秒数,获取Instant实例 --Date(long millis) Instant instant1 = Instant.ofEpochMilli(1632275028653L); System.out.println(instant1);//2021-09-22T01:43:48.653Z }