- 所有已实现的接口:
-
Serializable
,Comparable<DayOfWeek>
,Constable
,TemporalAccessor
,TemporalAdjuster
DayOfWeek
是一个枚举,代表一周中的7天 - 星期一、星期二、星期三、星期四、星期五、星期六和星期日。
除了文本枚举名称外,每个星期几都有一个int
值。这个int
值遵循ISO-8601标准,从1(星期一)到7(星期日)。建议应用程序使用枚举而不是int
值,以确保代码清晰明了。
这个枚举提供了对星期几的本地化文本形式的访问。一些区域设置还为每天分配不同的数字值,将星期日声明为值1,但是这个类不支持这种情况。请参阅WeekFields
以获取本地化的周编号。
不要使用ordinal()
来获取DayOfWeek
的数字表示。请改用getValue()
。
这个枚举代表了许多日历系统中常见的概念。因此,任何具有与ISO日历系统完全相同的星期几概念定义的日历系统都可以使用这个枚举。
- 实现要求:
- 这是一个不可变且线程安全的枚举。
- 自版本:
- 1.8
-
Nested Class Summary
Nested classes/interfaces declared in class java.lang.Enum
Enum.EnumDesc<E extends Enum<E>>
-
Enum Constant Summary
-
Method Summary
Modifier and TypeMethodDescriptionadjustInto
(Temporal temporal) 调整指定的时间对象以具有这个星期几。static DayOfWeek
from
(TemporalAccessor temporal) 从一个时间对象获取DayOfWeek
的实例。int
get
(TemporalField field) 获取这个星期几的指定字段的值作为int
。getDisplayName
(TextStyle style, Locale locale) 获取文本表示,比如“Mon”或“Friday”。long
getLong
(TemporalField field) 获取这个星期几的指定字段的值作为long
。int
getValue()
获取星期几的int
值。boolean
isSupported
(TemporalField field) 检查是否支持指定的字段。minus
(long days) 返回比当前星期几早指定天数的星期几。static DayOfWeek
of
(int dayOfWeek) 从int
值获取DayOfWeek
的实例。plus
(long days) 返回比当前星期几晚指定天数的星期几。<R> R
query
(TemporalQuery<R> query) 使用指定的查询查询这个星期几。range
(TemporalField field) 获取指定字段的有效值范围。static DayOfWeek
返回具有指定名称的此类的枚举常量。static DayOfWeek[]
values()
返回包含此枚举类的常量的数组,按照它们声明的顺序。
-
Enum Constant Details
-
MONDAY
星期一的星期几的单例实例。这个实例的数字值为1
。 -
TUESDAY
星期二的星期几的单例实例。这个实例的数字值为2
。 -
WEDNESDAY
星期三的星期几的单例实例。这个实例的数字值为3
。 -
THURSDAY
星期四的星期几的单例实例。这个实例的数字值为4
。 -
FRIDAY
星期五的星期几的单例实例。这个实例的数字值为5
。 -
SATURDAY
星期六的星期几的单例实例。这个实例的数字值为6
。 -
SUNDAY
星期日的星期几的单例实例。这个实例的数字值为7
。
-
-
Method Details
-
values
返回包含此枚举类的常量的数组,按照它们声明的顺序。- 返回:
- 包含此枚举类的常量的数组,按照它们声明的顺序
-
valueOf
返回具有指定名称的此类的枚举常量。字符串必须与此类中用于声明枚举常量的标识符完全匹配。(不允许存在多余的空格字符。)- 参数:
-
name
- 要返回的枚举常量的名称。 - 返回:
- 具有指定名称的枚举常量
- 抛出:
-
IllegalArgumentException
- 如果此枚举类没有具有指定名称的常量 -
NullPointerException
- 如果参数为null
-
of
从int
值获取DayOfWeek
的实例。DayOfWeek
是一个枚举,代表一周中的7天。此工厂允许从int
值获取枚举。这个int
值遵循ISO-8601标准,从1(星期一)到7(星期日)。- 参数:
-
dayOfWeek
- 要表示的星期几,从1(星期一)到7(星期日) - 返回:
- 星期几的单例,不为null
- 抛出:
-
DateTimeException
- 如果星期几无效
-
from
从一个时间对象获取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
获取文本表示,比如“Mon”或“Friday”。返回用于标识星期几的文本名称,适合向用户展示。参数控制返回文本的样式和区域设置。
如果找不到文本映射,则返回
数字值
。- 参数:
-
style
- 所需文本的长度,不为null -
locale
- 要使用的区域设置,不为null - 返回:
- 星期几的文本值,不为null
-
isSupported
检查是否支持指定的字段。检查此星期几是否可以查询指定字段。如果为false,则调用
range
和get
方法将抛出异常。如果字段是
DAY_OF_WEEK
,则此方法返回true。所有其他ChronoField
实例将返回false。如果字段不是
ChronoField
,则通过调用TemporalField.isSupportedBy(TemporalAccessor)
传递this
作为参数来获取此方法的结果。字段是否受支持由字段决定。- 在接口中指定:
-
isSupported
在接口TemporalAccessor
中 - 参数:
-
field
- 要检查的字段,null返回false - 返回:
- 如果此星期几支持该字段,则为true,否则为false
-
range
获取指定字段的有效值范围。范围对象表示字段的最小和最大有效值。此星期几用于增强返回范围的准确性。如果无法返回范围,因为不支持该字段或出于其他原因,将抛出异常。
如果字段是
DAY_OF_WEEK
,则将返回星期几的范围,从1到7。所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果字段不是
ChronoField
,则通过调用TemporalField.rangeRefinedBy(TemporalAccessor)
传递this
作为参数来获取此方法的结果。范围是否可获取由字段决定。- 指定者:
-
range
在接口TemporalAccessor
中 - 参数:
-
field
- 要查询范围的字段,不能为空 - 返回值:
- 字段的有效值范围,不能为空
- 抛出:
-
DateTimeException
- 如果无法获取字段的范围 -
UnsupportedTemporalTypeException
- 如果不支持该字段
-
get
从这个星期几中获取指定字段的值作为一个int
。查询这个星期几的指定字段的值。返回的值始终在字段的有效值范围内。如果无法返回值,因为不支持该字段或出现其他原因,将抛出异常。
如果字段是
DAY_OF_WEEK
,则将返回星期几的值,从1到7。所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果字段不是
ChronoField
,则通过调用TemporalField.getFrom(TemporalAccessor)
方法并将this
作为参数传递来获取此方法的结果。值是否可以获取以及值代表什么由字段决定。- 指定者:
-
get
在接口TemporalAccessor
中 - 参数:
-
field
- 要获取的字段,不能为空 - 返回值:
- 字段的值,在有效值范围内
- 抛出:
-
DateTimeException
- 如果无法获取字段的值或值超出字段的有效值范围 -
UnsupportedTemporalTypeException
- 如果不支持该字段或值范围超过int
-
ArithmeticException
- 如果发生数值溢出
-
getLong
从这个星期几中获取指定字段的值作为一个long
。查询这个星期几的指定字段的值。如果无法返回值,因为不支持该字段或出现其他原因,将抛出异常。
如果字段是
DAY_OF_WEEK
,则将返回星期几的值,从1到7。所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果字段不是
ChronoField
,则通过调用TemporalField.getFrom(TemporalAccessor)
方法并将this
作为参数传递来获取此方法的结果。值是否可以获取以及值代表什么由字段决定。- 指定者:
-
getLong
在接口TemporalAccessor
中 - 参数:
-
field
- 要获取的字段,不能为空 - 返回值:
- 字段的值
- 抛出:
-
DateTimeException
- 如果无法获取字段的值 -
UnsupportedTemporalTypeException
- 如果不支持该字段 -
ArithmeticException
- 如果发生数值溢出
-
plus
返回指定天数后的星期几。计算从星期日到星期一的一周结束。指定的周期可以为负数。
此实例是不可变的,不受此方法调用的影响。
- 参数:
-
days
- 要添加的天数,可以为正数或负数 - 返回值:
- 结果星期几,不能为空
-
minus
返回指定天数前的星期几。计算从一年的开始到星期日的一周开始。指定的周期可以为负数。
此实例是不可变的,不受此方法调用的影响。
- 参数:
-
days
- 要减去的天数,可以为正数或负数 - 返回值:
- 结果星期几,不能为空
-
query
使用指定的查询来查询这个星期几。使用指定的查询策略对象查询这个星期几。
TemporalQuery
对象定义了用于获取结果的逻辑。阅读查询的文档以了解此方法的结果。通过在指定的查询上调用
TemporalQuery.queryFrom(TemporalAccessor)
方法并将this
作为参数传递来获取此方法的结果。- 指定者:
-
query
在接口TemporalAccessor
中 - 类型参数:
-
R
- 结果的类型 - 参数:
-
query
- 要调用的查询,不能为空 - 返回值:
- 查询结果,可能返回null(由查询定义)
- 抛出:
-
DateTimeException
- 如果无法查询(由查询定义) -
ArithmeticException
- 如果发生数值溢出(由查询定义)
-
adjustInto
调整指定的时间对象以具有这个星期几。返回一个与输入具有相同可观察类型的时间对象,其中星期几更改为与此相同。
调整等同于使用
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
- 如果发生数值溢出
-