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 Summary

    Constructors
    Constructor
    Description
    构造
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    获取当前日期对象中的日部分
    int
    获取当前日期对象中的小时数
    long
    获取时间戳(毫秒)。
    int
    获取当前日期构建器中的分钟数
    int
    获取月份,从1开始。
    int
    获取纳秒数。
    int
    获取当前日期时间对象中的秒数
    long
    获取Unix时间戳(秒)。
    int
    获取当前周数的方法
    int
    获取年份。
    获取时区。
    int
    获取时区偏移量。
    boolean
    检查当前是否为上午。
    boolean
    检查时区偏移量是否已设置。
    boolean
    检查当前是否为下午。
    of()
    创建并返回一个DateBuilder实例。
    重置所有值为默认值
    setAm(boolean am)
    设置是否为上午的状态。
    setDay(int day)
    设置日期对象中的日部分
    setFlag(boolean flag)
    设置时区偏移量是否已设置的状态。
    setHour(int hour)
    设置日期对象中的小时数
    setMillisecond(long millisecond)
    设置时间戳(毫秒)。
    setMinute(int minute)
    设置日期构建器中的分钟数
    setMonth(int month)
    设置月份,从1开始。
    setNanosecond(int nanosecond)
    设置纳秒数。
    setPm(boolean pm)
    设置是否为下午的状态。
    setSecond(int second)
    设置日期时间对象中的秒数
    setUnixsecond(long unixsecond)
    设置Unix时间戳(秒)。
    setWeek(int week)
    设置日期构建器的周数,ISO8601规范,1代表Monday,2代表Tuesday,以此类推。
    setYear(int year)
    设置年份。
    设置时区。
    setZoneOffset(int zoneOffset)
    设置时区偏移量。
    将当前对象的日期时间信息转换为Calendar实例。 如果`unixsecond`不为0,将根据unix时间戳(秒)和纳秒偏移量构造Calendar。 否则,根据提供的时区信息`zone`或`zoneOffset`来设置Calendar的时区。 最后,设置年、月、日、时、分、秒和毫秒信息。
    将当前时间对象转换为DateTime类型。此方法根据是否设置了时区偏移量使用不同的转换策略。 如果时区偏移量未设置,则通过Calendar创建DateTime,无需转换时区。 如果时区偏移量已设置,则经过OffsetDateTime转换为本地时区的DateTime。 。
    将当前对象的日期时间信息转换为LocalDateTime。 此方法根据对象中的时间信息(年、月、日、时、分、秒、纳秒)和时区信息(如果存在), 创建并返回一个LocalDateTime实例。时区信息可以是Unix时间戳中的秒数(unixsecond), 也可以是显式设置的时区偏移量(zoneOffsetSetted),或者使用默认时区(zone != null)。
    将当前对象转换为 OffsetDateTime。 此方法根据 unixsecond、时区偏移量或时区来构建 OffsetDateTime。 如果 unixsecond 大于 0,将使用 unixsecond 和纳秒来创建 UTC 时间。 如果设置了时区偏移量,将使用该偏移量构造 OffsetDateTime。 如果设置了时区,将使用该时区构造 OffsetDateTime。 如果以上信息均未设置,则默认使用 UTC 时间戳 0 创建 OffsetDateTime。
    转换为带时区信息的DateTime 此方法用于保留原始时间戳,并且不丢失时区信息

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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 对象。