Module java.base
Package java.time

Enum Class DayOfWeek

所有已实现的接口:
Serializable, Comparable<DayOfWeek>, Constable, TemporalAccessor, TemporalAdjuster

public enum DayOfWeek extends Enum<DayOfWeek> implements TemporalAccessor, TemporalAdjuster
一个星期中的某一天,比如“星期二”。

DayOfWeek是一个枚举,代表一周中的7天 - 星期一、星期二、星期三、星期四、星期五、星期六和星期日。

除了文本枚举名称外,每个星期几都有一个int值。这个int值遵循ISO-8601标准,从1(星期一)到7(星期日)。建议应用程序使用枚举而不是int值,以确保代码清晰明了。

这个枚举提供了对星期几的本地化文本形式的访问。一些区域设置还为每天分配不同的数字值,将星期日声明为值1,但是这个类不支持这种情况。请参阅WeekFields以获取本地化的周编号。

不要使用ordinal()来获取DayOfWeek的数字表示。请改用getValue()

这个枚举代表了许多日历系统中常见的概念。因此,任何具有与ISO日历系统完全相同的星期几概念定义的日历系统都可以使用这个枚举。

实现要求:
这是一个不可变且线程安全的枚举。
自版本:
1.8
  • Enum Constant Details

    • MONDAY

      public static final DayOfWeek MONDAY
      星期一的星期几的单例实例。这个实例的数字值为1
    • TUESDAY

      public static final DayOfWeek TUESDAY
      星期二的星期几的单例实例。这个实例的数字值为2
    • WEDNESDAY

      public static final DayOfWeek WEDNESDAY
      星期三的星期几的单例实例。这个实例的数字值为3
    • THURSDAY

      public static final DayOfWeek THURSDAY
      星期四的星期几的单例实例。这个实例的数字值为4
    • FRIDAY

      public static final DayOfWeek FRIDAY
      星期五的星期几的单例实例。这个实例的数字值为5
    • SATURDAY

      public static final DayOfWeek SATURDAY
      星期六的星期几的单例实例。这个实例的数字值为6
    • SUNDAY

      public static final DayOfWeek SUNDAY
      星期日的星期几的单例实例。这个实例的数字值为7
  • Method Details

    • values

      public static DayOfWeek[] values()
      返回包含此枚举类的常量的数组,按照它们声明的顺序。
      返回:
      包含此枚举类的常量的数组,按照它们声明的顺序
    • valueOf

      public static DayOfWeek valueOf(String name)
      返回具有指定名称的此类的枚举常量。字符串必须与此类中用于声明枚举常量的标识符完全匹配。(不允许存在多余的空格字符。)
      参数:
      name - 要返回的枚举常量的名称。
      返回:
      具有指定名称的枚举常量
      抛出:
      IllegalArgumentException - 如果此枚举类没有具有指定名称的常量
      NullPointerException - 如果参数为null
    • of

      public static DayOfWeek of(int dayOfWeek)
      int值获取DayOfWeek的实例。

      DayOfWeek是一个枚举,代表一周中的7天。此工厂允许从int值获取枚举。这个int值遵循ISO-8601标准,从1(星期一)到7(星期日)。

      参数:
      dayOfWeek - 要表示的星期几,从1(星期一)到7(星期日)
      返回:
      星期几的单例,不为null
      抛出:
      DateTimeException - 如果星期几无效
    • from

      public static DayOfWeek from(TemporalAccessor temporal)
      从一个时间对象获取DayOfWeek的实例。

      根据指定的时间获取一个星期几。一个TemporalAccessor表示一组任意的日期和时间信息,此工厂将其转换为DayOfWeek的实例。

      转换提取DAY_OF_WEEK字段。

      此方法与函数接口TemporalQuery的签名匹配,允许通过方法引用DayOfWeek::from来使用它作为查询。

      参数:
      temporal - 要转换的时间对象,不为null
      返回:
      星期几,不为null
      抛出:
      DateTimeException - 如果无法转换为DayOfWeek
    • getValue

      public int getValue()
      获取星期几的int值。

      这些值按照ISO-8601标准编号,从1(星期一)到7(星期日)。请参阅WeekFields.dayOfWeek()以获取本地化的周编号。

      返回:
      星期几,从1(星期一)到7(星期日)
    • getDisplayName

      public String getDisplayName(TextStyle style, Locale locale)
      获取文本表示,比如“Mon”或“Friday”。

      返回用于标识星期几的文本名称,适合向用户展示。参数控制返回文本的样式和区域设置。

      如果找不到文本映射,则返回数字值

      参数:
      style - 所需文本的长度,不为null
      locale - 要使用的区域设置,不为null
      返回:
      星期几的文本值,不为null
    • isSupported

      public boolean isSupported(TemporalField field)
      检查是否支持指定的字段。

      检查此星期几是否可以查询指定字段。如果为false,则调用rangeget方法将抛出异常。

      如果字段是DAY_OF_WEEK,则此方法返回true。所有其他ChronoField实例将返回false。

      如果字段不是ChronoField,则通过调用TemporalField.isSupportedBy(TemporalAccessor)传递this作为参数来获取此方法的结果。字段是否受支持由字段决定。

      在接口中指定:
      isSupported 在接口 TemporalAccessor
      参数:
      field - 要检查的字段,null返回false
      返回:
      如果此星期几支持该字段,则为true,否则为false
    • range

      public ValueRange range(TemporalField field)
      获取指定字段的有效值范围。

      范围对象表示字段的最小和最大有效值。此星期几用于增强返回范围的准确性。如果无法返回范围,因为不支持该字段或出于其他原因,将抛出异常。

      如果字段是DAY_OF_WEEK,则将返回星期几的范围,从1到7。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException

      如果字段不是ChronoField,则通过调用TemporalField.rangeRefinedBy(TemporalAccessor)传递this作为参数来获取此方法的结果。范围是否可获取由字段决定。

      指定者:
      range 在接口 TemporalAccessor
      参数:
      field - 要查询范围的字段,不能为空
      返回值:
      字段的有效值范围,不能为空
      抛出:
      DateTimeException - 如果无法获取字段的范围
      UnsupportedTemporalTypeException - 如果不支持该字段
    • get

      public int get(TemporalField field)
      从这个星期几中获取指定字段的值作为一个int

      查询这个星期几的指定字段的值。返回的值始终在字段的有效值范围内。如果无法返回值,因为不支持该字段或出现其他原因,将抛出异常。

      如果字段是DAY_OF_WEEK,则将返回星期几的值,从1到7。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException

      如果字段不是ChronoField,则通过调用TemporalField.getFrom(TemporalAccessor)方法并将this作为参数传递来获取此方法的结果。值是否可以获取以及值代表什么由字段决定。

      指定者:
      get 在接口 TemporalAccessor
      参数:
      field - 要获取的字段,不能为空
      返回值:
      字段的值,在有效值范围内
      抛出:
      DateTimeException - 如果无法获取字段的值或值超出字段的有效值范围
      UnsupportedTemporalTypeException - 如果不支持该字段或值范围超过int
      ArithmeticException - 如果发生数值溢出
    • getLong

      public long getLong(TemporalField field)
      从这个星期几中获取指定字段的值作为一个long

      查询这个星期几的指定字段的值。如果无法返回值,因为不支持该字段或出现其他原因,将抛出异常。

      如果字段是DAY_OF_WEEK,则将返回星期几的值,从1到7。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException

      如果字段不是ChronoField,则通过调用TemporalField.getFrom(TemporalAccessor)方法并将this作为参数传递来获取此方法的结果。值是否可以获取以及值代表什么由字段决定。

      指定者:
      getLong 在接口 TemporalAccessor
      参数:
      field - 要获取的字段,不能为空
      返回值:
      字段的值
      抛出:
      DateTimeException - 如果无法获取字段的值
      UnsupportedTemporalTypeException - 如果不支持该字段
      ArithmeticException - 如果发生数值溢出
    • plus

      public DayOfWeek plus(long days)
      返回指定天数后的星期几。

      计算从星期日到星期一的一周结束。指定的周期可以为负数。

      此实例是不可变的,不受此方法调用的影响。

      参数:
      days - 要添加的天数,可以为正数或负数
      返回值:
      结果星期几,不能为空
    • minus

      public DayOfWeek minus(long days)
      返回指定天数前的星期几。

      计算从一年的开始到星期日的一周开始。指定的周期可以为负数。

      此实例是不可变的,不受此方法调用的影响。

      参数:
      days - 要减去的天数,可以为正数或负数
      返回值:
      结果星期几,不能为空
    • query

      public <R> R query(TemporalQuery<R> query)
      使用指定的查询来查询这个星期几。

      使用指定的查询策略对象查询这个星期几。 TemporalQuery对象定义了用于获取结果的逻辑。阅读查询的文档以了解此方法的结果。

      通过在指定的查询上调用TemporalQuery.queryFrom(TemporalAccessor)方法并将this作为参数传递来获取此方法的结果。

      指定者:
      query 在接口 TemporalAccessor
      类型参数:
      R - 结果的类型
      参数:
      query - 要调用的查询,不能为空
      返回值:
      查询结果,可能返回null(由查询定义)
      抛出:
      DateTimeException - 如果无法查询(由查询定义)
      ArithmeticException - 如果发生数值溢出(由查询定义)
    • adjustInto

      public Temporal adjustInto(Temporal temporal)
      调整指定的时间对象以具有这个星期几。

      返回一个与输入具有相同可观察类型的时间对象,其中星期几更改为与此相同。

      调整等同于使用Temporal.with(TemporalField, long)并传递ChronoField.DAY_OF_WEEK作为字段。请注意,这在星期一到星期日的一周内向前或向后调整。有关本地化的星期开始日期,请参阅WeekFields.dayOfWeek()。有关具有更多控制的其他调整器,请参阅TemporalAdjuster,例如next(MONDAY)

      在大多数情况下,通过使用Temporal.with(TemporalAdjuster)来反转调用模式更清晰:

         // 这两行是等效的,但推荐第二种方法
         temporal = thisDayOfWeek.adjustInto(temporal);
         temporal = temporal.with(thisDayOfWeek);
       

      例如,给定一个日期是星期三,以下是输出:

         dateOnWed.with(MONDAY);     // 提前两天
         dateOnWed.with(TUESDAY);    // 提前一天
         dateOnWed.with(WEDNESDAY);  // 同一天
         dateOnWed.with(THURSDAY);   // 推迟一天
         dateOnWed.with(FRIDAY);     // 推迟两天
         dateOnWed.with(SATURDAY);   // 推迟三天
         dateOnWed.with(SUNDAY);     // 推迟四天
       

      此实例是不可变的,不受此方法调用的影响。

      指定者:
      adjustInto 在接口 TemporalAdjuster
      参数:
      temporal - 要调整的目标对象,不能为空
      返回值:
      调整后的对象,不能为空
      抛出:
      DateTimeException - 如果无法进行调整
      ArithmeticException - 如果发生数值溢出