文
章
目
录
章
目
录
在Java中,时间戳由以下类表示:
- java.time.Instant(自Java 8起)
- java.sql.Timestamp(Java 7及更早版本)
1.Java8及以上使用Instant获取当前时间戳
Instant表示时间轴上的一个唯一点,主要用于记录应用程序中的事件时间戳。它是一个以UTC(通用时间尺度)表示的实际时间点。
Instant instant = Instant.now();
System.out.println(instant); //2023-10-31T01:10:57.148Z
2.java.sql.Timestamp(Java 7或更早版本)
这个遗留类有两种方法可以获取当前时间戳。
Timestamp timestamp1 = new Timestamp(System.currentTimeMillis());
Date date = new Date();
Timestamp timestamp2 = new Timestamp(date.getTime());
System.out.println(timestamp1); //2022-02-15 13:55:56.18
System.out.println(timestamp2); //2022-02-15 13:55:56.18
3.Instant与ZonedDateTime的对比
从高层次来看,Instant和ZonedDateTime类似乎很相似,但它们并不相同。
- ZonedDateTime是特定时区的实际时间点。
- Instant是UTC中的一个时间点。
Instant.now()的值在世界上任何地方都是完全相同的,而ZonedDateTime.now()的值将根据与该实例关联的时区进行调整。
通常情况下,考虑使用Instant类来存储数据库中的时间戳值,并在不同的应用程序之间传递。使用ZonedDateTime实例向用户显示特定时区的信息。