大家在工作中是如何生成时间戳的呢
Java8提供了一个核心类Instant,它代表时间轴上的一个绝对的时间点,所以用它记录时间戳再合适不过了。
特性
- UTC时间:Instant表示的是格林威治标准时间,不含时区信息。
- 起始时间:从1970-01-01T00:00:00Z(Unix 纪元)开始所经过的时间,精确到纳秒。
- 线程安全:Instant是不可变对象。
使用
虽然看起来这个类不像Date、LocalDate这些类那么眼熟,其实使用起来超简单。
创建对象后,可以直接输出查看,参考代码如下:
Instant now = Instant.now();
System.out.println(now);
直接打印会输出什么呢?
2026-01-26T00:50:26.287Z,这是一个标准的ISO 8601格式,这个时间格式很容易看懂。
JDK17中的小变化
当使用JDK17时,它变成了这样2026-01-26T00:51:41.594678300Z。
由原来的3位毫秒,变为了9位纳秒。这样也是可以直接使用的。如果要求格式严格统一,则可以将其截断为指定单位。
截断为毫秒的参考代码如下:
Instant truncated = Instant.now().truncatedTo(java.time.temporal.ChronoUnit.MILLIS);
System.out.println(truncated);