Module bus.core

Class DateBuilder

java.lang.Object
org.miaixz.bus.core.center.date.builder.DateBuilder

public final class DateBuilder extends Object
DateBuilder类用于构建和操作日期 该类提供了多个方法来设置年、月、日等日期字段,以及获取构建的日期对象 它是不可变的,因此每个设置方法都会返回一个新的DateBuilder实例
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • DateBuilder

      public DateBuilder()
      构造
  • Method Details

    • of

      public static DateBuilder of()
      创建并返回一个DateBuilder实例。
      Returns:
      this
    • getYear

      public int getYear()
      获取年份。
      Returns:
      返回设置的年份。
    • setYear

      public DateBuilder setYear(int year)
      设置年份。
      Parameters:
      year - 要设置的年份
      Returns:
      返回DateBuilder实例,支持链式调用。
    • getMonth

      public int getMonth()
      获取月份,从1开始。
      Returns:
      返回设置的月份,从1开始。
    • setMonth

      public DateBuilder setMonth(int month)
      设置月份,从1开始。
      Parameters:
      month - 要设置的月份,从1开始。
      Returns:
      this
    • getWeek

      public int getWeek()
      获取当前周数的方法
      Returns:
      int 返回当前的周数
    • setWeek

      public DateBuilder setWeek(int week)
      设置日期构建器的周数,ISO8601规范,1代表Monday,2代表Tuesday,以此类推。
      Parameters:
      week - 指定的周数,通常用于构建具体的日期对象,ISO8601规范,1代表Monday,2代表Tuesday,以此类推。
      Returns:
      this。
    • getDay

      public int getDay()
      获取当前日期对象中的日部分
      Returns:
      返回一个整数,表示当前日期中的日。
    • setDay

      public DateBuilder setDay(int day)
      设置日期对象中的日部分
      Parameters:
      day - 指定要设置的日,必须为整数。
      Returns:
      this
    • getHour

      public int getHour()
      获取当前日期对象中的小时数
      Returns:
      小时数,返回值类型为int。
    • setHour

      public DateBuilder setHour(int hour)
      设置日期对象中的小时数
      Parameters:
      hour - 要设置的小时数,必须为整数。
      Returns:
      this
    • getMinute

      public int getMinute()
      获取当前日期构建器中的分钟数
      Returns:
      返回设置的分钟数,类型为int。
    • setMinute

      public DateBuilder setMinute(int minute)
      设置日期构建器中的分钟数
      Parameters:
      minute - 要设置的分钟数,必须为整数。
      Returns:
      this。
    • getSecond

      public int getSecond()
      获取当前日期时间对象中的秒数
      Returns:
      返回当前日期时间对象中的秒数
    • setSecond

      public DateBuilder setSecond(int second)
      设置日期时间对象中的秒数
      Parameters:
      second - 指定要设置的秒数
      Returns:
      this
    • getNanosecond

      public int getNanosecond()
      获取纳秒数。
      Returns:
      当前对象的纳秒数。
    • setNanosecond

      public DateBuilder setNanosecond(int nanosecond)
      设置纳秒数。
      Parameters:
      nanosecond - 要设置的纳秒数。
      Returns:
      this
    • getUnixsecond

      public long getUnixsecond()
      获取Unix时间戳(秒)。
      Returns:
      当前对象的Unix时间戳(以秒为单位)。
    • setUnixsecond

      public DateBuilder setUnixsecond(long unixsecond)
      设置Unix时间戳(秒)。
      Parameters:
      unixsecond - 要设置的Unix时间戳(以秒为单位)。
      Returns:
      this
    • getMillisecond

      public long getMillisecond()
      获取时间戳(毫秒)。
      Returns:
      当前对象的时间戳(以毫秒为单位)。
    • setMillisecond

      public DateBuilder setMillisecond(long millisecond)
      设置时间戳(毫秒)。
      Parameters:
      millisecond - 要设置的时间戳(以毫秒为单位)。
      Returns:
      this
    • isFlag

      public boolean isFlag()
      检查时区偏移量是否已设置。
      Returns:
      如果时区偏移量已设置则返回true,否则返回false。
    • setFlag

      public DateBuilder setFlag(boolean flag)
      设置时区偏移量是否已设置的状态。
      Parameters:
      flag - 指定时区偏移量是否已设置的状态。
      Returns:
      this
    • getZoneOffset

      public int getZoneOffset()
      获取时区偏移量。
      Returns:
      返回设置的时区偏移量。
    • setZoneOffset

      public DateBuilder setZoneOffset(int zoneOffset)
      设置时区偏移量。
      Parameters:
      zoneOffset - 要设置的时区偏移量。
      Returns:
      this
    • getZone

      public TimeZone getZone()
      获取时区。
      Returns:
      返回设置的时区。
    • setZone

      public DateBuilder setZone(TimeZone zone)
      设置时区。
      Parameters:
      zone - 要设置的时区。
      Returns:
      this
    • isAm

      public boolean isAm()
      检查当前是否为上午。
      Returns:
      如果当前设置为上午则返回true,否则返回false。
    • setAm

      public DateBuilder setAm(boolean am)
      设置是否为上午的状态。
      Parameters:
      am - 指定是否为上午的状态。
      Returns:
      this
    • isPm

      public boolean isPm()
      检查当前是否为下午。
      Returns:
      如果当前设置为下午则返回true,否则返回false。
    • setPm

      public DateBuilder setPm(boolean pm)
      设置是否为下午的状态。
      Parameters:
      pm - 指定是否为下午的状态。
      Returns:
      this
    • reset

      public DateBuilder reset()
      重置所有值为默认值
      Returns:
      this
    • toDate

      public DateTime toDate()
      将当前时间对象转换为DateTime类型。此方法根据是否设置了时区偏移量使用不同的转换策略。
      • 如果时区偏移量未设置,则通过Calendar创建DateTime,无需转换时区。
      • 如果时区偏移量已设置,则经过OffsetDateTime转换为本地时区的DateTime
      Returns:
      DateTime 表示当前时间的 DateTime 对象。
    • toZonedDateTime

      public DateTime toZonedDateTime()
      转换为带时区信息的DateTime 此方法用于保留原始时间戳,并且不丢失时区信息
      Returns:
      DateTime
    • toCalendar

      public Calendar toCalendar()
      将当前对象的日期时间信息转换为Calendar实例。 如果`unixsecond`不为0,将根据unix时间戳(秒)和纳秒偏移量构造Calendar。 否则,根据提供的时区信息`zone`或`zoneOffset`来设置Calendar的时区。 最后,设置年、月、日、时、分、秒和毫秒信息。
      Returns:
      Calendar 根据当前日期时间信息构建的Calendar实例。
      Throws:
      DateTimeException - 如果时区偏移量无法转换为有效的时区ID,则抛出异常。
    • toLocalDateTime

      public LocalDateTime toLocalDateTime()
      将当前对象的日期时间信息转换为LocalDateTime。 此方法根据对象中的时间信息(年、月、日、时、分、秒、纳秒)和时区信息(如果存在), 创建并返回一个LocalDateTime实例。时区信息可以是Unix时间戳中的秒数(unixsecond), 也可以是显式设置的时区偏移量(zoneOffsetSetted),或者使用默认时区(zone != null)。
      Returns:
      LocalDateTime 表示当前对象日期时间的LocalDateTime实例。
    • toOffsetDateTime

      public OffsetDateTime toOffsetDateTime()
      将当前对象转换为 OffsetDateTime。 此方法根据 unixsecond、时区偏移量或时区来构建 OffsetDateTime。 如果 unixsecond 大于 0,将使用 unixsecond 和纳秒来创建 UTC 时间。 如果设置了时区偏移量,将使用该偏移量构造 OffsetDateTime。 如果设置了时区,将使用该时区构造 OffsetDateTime。 如果以上信息均未设置,则默认使用 UTC 时间戳 0 创建 OffsetDateTime。
      Returns:
      OffsetDateTime 表示当前时间的 OffsetDateTime 对象。