Instant
Instant 类是 Java 8 中引入的,用于表示一个具体的时间点,它基于 UTC(协调世界时)时区。以下是 Instant
类的一些常用方法及其简要说明:
- now():获取当前的
Instant
对象,表示当前时间。 - ofEpochSecond(long epochSecond):根据自 Unix 纪元(1970-01-01T00:00:00Z)以来的秒数创建
Instant
对象。 - ofEpochMilli(long epochMilli):根据自 Unix 纪元以来的毫秒数创建
Instant
对象。 - getEpochSecond():获取
Instant
对象表示的时间自 Unix 纪元以来的秒数。 - toEpochMilli():获取
Instant
对象表示的时间自 Unix 纪元以来的毫秒数,等同于System.currentTimeMillis()
。 - getNano():获取
Instant
对象中的纳秒数,表示自上一秒以来的纳秒数。 - plus(Duration duration):在当前
Instant
对象上加上指定的持续时间,返回一个新的Instant
对象。 - minus(Duration duration):在当前
Instant
对象上减去指定的持续时间,返回一个新的Instant
对象。 - atZone(ZoneId zone):将
Instant
与时区结合以创建ZonedDateTime
对象。 - truncatedTo(TemporalUnit unit):返回截断为指定单位的
Instant
对象的副本。
以下是一些代码案例:
// 获取当前时间的 Instant 对象
Instant now = Instant.now();
System.out.println("当前时间: " + now);
// 根据秒数创建 Instant 对象
Instant instantFromSeconds = Instant.ofEpochSecond(1643723400L);
System.out.println("根据秒数创建的时间: " + instantFromSeconds);
// 根据毫秒数创建 Instant 对象
Instant instantFromMillis = Instant.ofEpochMilli(1643723400000L);
System.out.println("根据毫秒数创建的时间: " + instantFromMillis);
// 获取自 Unix 纪元以来的秒数和毫秒数
long seconds = now.getEpochSecond();
long millis = now.toEpochMilli();
System.out.println("自 Unix 纪元以来的秒数: " + seconds);
System.out.println("自 Unix 纪元以来的毫秒数: " + millis);
// 获取纳秒数
int nanos = now.getNano();
System.out.println("纳秒数: " + nanos);
// 在当前时间上加上一个小时
Instant oneHourLater = now.plus(Duration.ofHours(1));
System.out.println("一小时后的时间: " + oneHourLater);
// 从当前时间减去 30 分钟
Instant thirtyMinutesEarlier = now.minus(Duration.ofMinutes(30));
System.out.println("三十分钟前的时间: " + thirtyMinutesEarlier);
Duration
Duration 类是 Java 8 中引入的,用于表示两个时间点之间的时间量(例如,持续时间)。以下是 Duration
类的一些常用方法及其简要说明:
- ofDays(long days):创建表示指定天数的
Duration
对象。 - ofHours(long hours):创建表示指定小时数的
Duration
对象。 - ofMinutes(long minutes):创建表示指定分钟数的
Duration
对象。 - ofSeconds(long seconds):创建表示指定秒数的
Duration
对象。 - ofMillis(long millis):创建表示指定毫秒数的
Duration
对象。 - ofNanos(long nanos):创建表示指定纳秒数的
Duration
对象。 - of(long amount, TemporalUnit unit):根据指定的时间量和时间单位创建
Duration
对象。 - plus(long amountToAdd, TemporalUnit unit):在当前
Duration
对象上加上指定的时间量,返回一个新的Duration
对象。 - minus(long amountToSubtract, TemporalUnit unit):从当前
Duration
对象减去指定的时间量,返回一个新的Duration
对象。 - plus(Duration duration):在当前
Duration
对象上加上另一个Duration
对象,返回一个新的Duration
对象。 - minus(Duration duration):从当前
Duration
对象减去另一个Duration
对象,返回一个新的Duration
对象。 - toDays():将
Duration
对象转换为天数。 - toHours():将
Duration
对象转换为小时数。 - toMinutes():将
Duration
对象转换为分钟数。 - toSeconds():将
Duration
对象转换为秒数。 - toMillis():将
Duration
对象转换为毫秒数。 - toNanos():将
Duration
对象转换为纳秒数。 - getSeconds():获取
Duration
对象中的秒数部分。 - getNano():获取
Duration
对象中的纳秒部分。
// 创建表示特定时间量的 Duration 对象
Duration duration = Duration.ofDays(2).plusHours(3).plusMinutes(45).plusSeconds(10);
System.out.println("持续时间: " + duration);
// 创建表示特定时间量的 Duration 对象(其他方法)
Duration durationHours = Duration.ofHours(5);
Duration durationMinutes = Duration.ofMinutes(30);
Duration durationSeconds = Duration.ofSeconds(15);
Duration durationMillis = Duration.ofMillis(500);
Duration durationNanos = Duration.ofNanos(123456789);
// 在 Duration 对象上加上或减去时间量
Duration durationPlus = duration.plusHours(2);
Duration durationMinus = duration.minusMinutes(10);
// 将 Duration 对象与其他 Duration 对象相加或相减
Duration durationPlusOther = duration.plus(Duration.ofHours(1));
Duration durationMinusOther = duration.minus(Duration.ofMinutes(5));
// 转换为不同的时间单位
long days = duration.toDays();
long hours = duration.toHours();
long minutes = duration.toMinutes();
long seconds = duration.getSeconds();
int nanos = duration.getNano();
// 打印结果
System.out.println("天数: " + days);
System.out.println("小时数: " + hours);
System.out.println("分钟数: " + minutes);
System.out.println("秒数: " + seconds);
System.out.println("纳秒数: " + nanos);