目录
1.2 ZoneId 类中的 getAvailableZoneIds() 静态方法
3.3 Instant 类中的 getEpochSecond() 实例方法
3.4 Instant 类中的 getNano() 实例方法
3.5 Instant 类中的 equals()、isBefore()、isAfter() 实例方法
API
1.0 ZoneId 类的说明
ZoneId 类是 Java 8 中引入的一个类,用于表示时区的标识符。它是一个不可变的类,可以用于创建时区对象、获取时区信息、转换时区等操作。
1.1 如何创建 ZoneId 类的对象呢?
可以通过 systemDefault() 静态方法来获取当前系统默认的时区,也可以通过 of(String zoneId) 静态方法来获取指定时区标识符创建 ZoneId 对象。
代码如下:
import java.time.ZoneId; public class ZoneID { public static void main(String[] args) { //获取默认时区 ZoneId zoneId = ZoneId.systemDefault(); System.out.println(zoneId); //获取指定时区 ZoneId zoneId1 = ZoneId.of("Asia/Shanghai"); System.out.println(zoneId1); } }
运行结果如下:
1.2 ZoneId 类中的 getAvailableZoneIds() 静态方法
获取所有可用的时区标识符。
代码如下:
import java.time.ZoneId; public class ZoneID { public static void main(String[] args) { System.out.println(ZoneId.getAvailableZoneIds()); } }
运行结果如下:
当然还有很多,没列举完。可以根据以上的时区,通过 of() 静态方法去创建相对应的对象。
2.0 ZoneDateTime 类的说明
ZoneDateTime 类是 Java 8 中引入的一个类,它是 LocalDateTime 类的子类,用于表示带有时区信息的日期和时间。它包含了日期、时间和时区的信息,并提供了一系列操作方法来处理日期和时间的转换、比较和计算。
2.1 如何创建 ZoneDateTime 类的对象呢?
可以通过 now() 静态方法创建当前系统默认的带时区的日期时间对象,也可以通过 now(ZoneId zone ) 静态方法创建指定时区的日期时间对象。
代码如下:
import java.time.ZoneId; import java.time.ZonedDateTime; public class ZoneID { public static void main(String[] args) { ZonedDateTime zonedDateTime = ZonedDateTime.now(); System.out.println(zonedDateTime); ZoneId zoneId = ZoneId.of("America/Marigot"); ZonedDateTime zonedDateTime1 = ZonedDateTime.now(zoneId); System.out.println(zonedDateTime1); } }
运行结果如下:
ZoneDateTime 类中的实例方法跟 LocalDateTime 类(介绍在下面的链接)中的实例方法大致相同,这里就不多赘述了。
https://blog.csdn.net/Tingfeng__/article/details/133839673?spm=1001.2014.3001.5501
3.0 Instant 类的说明
Instant 类是 Java 8 中引入的一个类,用于表示时间戳,即从 1970 年 1 月 1 日 00:00:00 UTC(协调世界时)开始的秒数。它是一个不可变的类,可以用于获取当前的时间戳、进行时间戳的比较和计算等操作。
3.1 如何创建 Instant 类的对象呢?
可以通过 now() 静态方法来创建当前时间戳。
代码如下:
import java.time.Instant; public class Text_Instant { public static void main(String[] args) { Instant istand = Instant.now(); System.out.println(istand); } }
运行结果如下:
3.2 如何获取其他时区的时间戳?
代码如下:
import java.time.Instant; import java.time.ZoneId; import java.time.ZonedDateTime; public class Text_Instant { public static void main(String[] args) { //先找到适合的需要的时区,创建ZoneId对象 ZoneId zoneId = ZoneId.of("America/Port_of_Spain"); //然后根据 now() 方法传入ZoneId对象来创建ZonedDateTime ZonedDateTime zonedDateTime = ZonedDateTime.now(zoneId); //再有ZonedDateTime类中实例方法 toInstant() 得到 Instant类型的对象。 Instant instant = zonedDateTime.toInstant(); System.out.println(instant); } }
运行结果如下:
3.3 Instant 类中的 getEpochSecond() 实例方法
获取时间戳的秒数。
代码如下:
import java.time.Instant; public class Text_Instant { public static void main(String[] args) { Instant instant = Instant.now(); long a = instant.getEpochSecond(); System.out.println(a); } }
运行结果如下:
3.4 Instant 类中的 getNano() 实例方法
从时间线开始,获取从第二个开始的纳秒数。
代码如下:
import java.time.Instant; public class Text_Instant { public static void main(String[] args) { Instant instant = Instant.now(); int b = instant.getNano(); System.out.println(b); } }
运行结果如下:
3.5 Instant 类中的 equals()、isBefore()、isAfter() 实例方法
equals() 方法是用来判断两个相同类型的对象,如秒、毫秒、纳秒是否相同。
isBefore() 方法是用来判断两个相同类型的对象,如秒、毫秒、纳秒是否在调用此方法的对象之前。
isAfter() 方法是用来判断两个相同类型的对象,如秒、毫秒、纳秒是否在调用此方法的对象之后。
代码如下(以 equals() 方法为例):
import java.time.Instant; public class Text_Instant { public static void main(String[] args) { //创建当前时间戳对象 Instant instant1 = Instant.now(); //对当前时间戳减1秒 Instant instant2 = instant1.minusSeconds(1); //对当前时间戳加300毫秒 Instant instant3 = instant1.plusMillis(300); //判断两个对象的时间戳是否相同 System.out.println(instant2.equals(instant3)); } }
运行结果如下:
答案肯定是不一样的,都改变了,注意原来的时间戳对象是没有改变,只是创建了新的对象而已,这些对象都是不可变对象,内容不可改变的。
本篇的API需要多练练手,实操一波熟练掌握即可。