时间戳

时间戳

在 Java 8 之前,我们使用 java.sql.Timestamp 来表示时间戳对象,可以通过以下方式创建与获取对象:

// 利用系统标准时间创建
Timestamp timestamp = new Timestamp(System.currentTimeMillis());

// 从 Date 对象中创建
new Timestamp((new Date()).getTime());

// 获取自 1970-01-01 00:00:00 GMT 以来的毫秒数
timestamp.getTime();

在 Java 8 中,即可以使用 java.time.Instant 来表示自从 1970-01-01T00:00:00Z 之后经过的标准时间:

// 基于静态函数创建
Instant instant = Instant.now();

// 基于 Date 或者毫秒数转换
Instant someInstant = someDate.toInstant();

Instant someInstant = Instant.ofEpochMilli(someDate.getTime());

// 基于 TimeStamp 转换
Instant instant = timestamp.toInstant();

// 从 LocalDate 转化而来
LocalDate.now().atStartOfDay().toInstant(ZoneOffset.UTC)

// 从 LocalDateTime 转化而来
ldt.atZone(ZoneId.systemDefault()).toInstant();

// 获取毫秒
long timeStampMillis = instant.toEpochMilli();

// 获取秒
long timeStampSeconds = instant.getEpochSecond();

Clock 方便我们去读取当前的日期与时间。Clock 可以根据不同的时区来进行创建,并且可以作为System.currentTimeMillis()的替代。这种指向时间轴的对象即是Instant类。Instants 可以被用于创建java.util.Date对象。

Clock clock = Clock.systemDefaultZone();
long millis = clock.millis();

Instant instant = clock.instant();
Date legacyDate = Date.from(instant);   // legacy java.util.Date
上一页
下一页