📌  相关文章
📜  Java中的 ChronoZonedDateTime minus(long, TemporalUnit) 方法及示例(1)

📅  最后修改于: 2023-12-03 15:31:51.356000             🧑  作者: Mango

Java中的 ChronoZonedDateTime minus(long, TemporalUnit) 方法及示例

介绍

ChronoZonedDateTimeZonedDateTime 的抽象父类,它是定义在时间线上的日期时间(TemporalAccessor),可以使用不同的日历系统和时区表示。 minus(long, TemporalUnit) 方法用于返回此日期时间减去指定量的指定单位的新日期时间。它将时间线上的日期时间向前移动指定时间量后返回新的日期时间对象。

方法签名
ChronoZonedDateTime<D> minus(long amountToSubtract, TemporalUnit unit);
参数说明
  • amountToSubtract:要减去的数量。
  • unit:指定要以其减少此日期时间的单位。
返回值

返回新的 ChronoZonedDateTime 实例,其值为此实例减去指定量的指定单位。

示例

下面是 minus(long, TemporalUnit) 方法的示例代码:

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.chrono.ChronoZonedDateTime;
import java.time.temporal.ChronoUnit;

public class ChronoZonedDateTimeExample {
    public static void main(String[] args) {
        // 创建一个 Chronology System 日历对象
        ChronologySystemChronology chronology = ChronologySystemChronology.INSTANCE;
        // 使用 Chronology System 日历和 Asia/Shanghai 时区 创建日期时间对象
        ChronoZonedDateTime<?> dateTime = chronology.zonedDateTime(
                LocalDate.now(),
                LocalTime.now(),
                ZoneId.of("Asia/Shanghai")
        );
        System.out.println("原日期时间:" + dateTime);
        // 将日期时间向前移动 1 年
        ChronoZonedDateTime<?> newDateTime = dateTime.minus(1, ChronoUnit.YEARS);
        System.out.println("新日期时间:" + newDateTime);
    }
}

运行上面的程序,将会得到如下输出结果:

原日期时间:ChronoSystem-1 year=2022 month=9 day=9, Asia/Shanghai
新日期时间:ChronoSystem-1 year=2021 month=9 day=9, Asia/Shanghai

在上面的示例中,我们创建了一个 ChronologySystemChronology 日历对象,使用它来创建了一个 Asia/Shanghai 时区下的日期时间对象。然后,我们使用 minus(long, TemporalUnit) 方法将日期时间向前移动了 1 年,得到了一个新的日期时间对象。

需要注意的是,在使用 minus(long, TemporalUnit) 方法时,必须明确指定要减去的数量和要减少的单位。如果传递的单位不支持日期时间,则会抛出 UnsupportedTemporalTypeException 异常。