- java.lang.Object
-
- java.lang.Enum<DayOfWeek>
-
- java.time.DayOfWeek
-
- 实现的所有接口
-
Serializable
,Comparable<DayOfWeek>
,TemporalAccessor
,TemporalAdjuster
public enum DayOfWeek extends Enum<DayOfWeek> implements TemporalAccessor, TemporalAdjuster
一周中的某一天,例如“星期二”。DayOfWeek
是代表一周中7天的枚举 - 星期一,星期二,星期三,星期四,星期五,星期六和星期日。除文本枚举名称外,每个星期的值都为
int
。int
值遵循ISO-8601标准,从1(星期一)到7(星期日)。 建议应用程序使用枚举而不是int
值来确保代码清晰度。此枚举可以访问星期几的本地化文本形式。 某些语言环境还为日期分配不同的数值,声明星期日的值为1,但此类不提供此支持。 有关本地化的周编号,请参阅
WeekFields
。请勿使用
ordinal()
获取ordinal()
的数字表示DayOfWeek
。 请改用getValue()
。此枚举代表了许多日历系统中的常见概念。 因此,该枚举可以由任何日历系统使用,该日历系统具有与ISO日历系统完全等同的星期几概念。
- 实现要求:
- 这是一个不可变且线程安全的枚举。
- 从以下版本开始:
- 1.8
-
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 Temporal
adjustInto(Temporal temporal)
调整指定的时态对象以具有此星期几。static DayOfWeek
from(TemporalAccessor temporal)
从时态对象获得DayOfWeek
的实例。int
get(TemporalField field)
从星期几获取指定字段的值,作为int
。String
getDisplayName(TextStyle style, Locale locale)
获取文本表示,例如“Mon”或“Friday”。long
getLong(TemporalField field)
从long
获取此星期几中指定字段的值。int
getValue()
获取星期几int
值。boolean
isSupported(TemporalField field)
检查是否支持指定的字段。DayOfWeek
minus(long days)
返回星期几,即此前一天的指定天数。static DayOfWeek
of(int dayOfWeek)
从int
值获得DayOfWeek
的实例。DayOfWeek
plus(long days)
返回星期几,即此后的指定天数。<R> R
query(TemporalQuery<R> query)
使用指定的查询查询此星期几。ValueRange
range(TemporalField field)
获取指定字段的有效值范围。static DayOfWeek
valueOf(String name)
返回具有指定名称的此类型的枚举常量。static DayOfWeek[]
values()
按照声明的顺序返回一个包含此枚举类型常量的数组。
-
-
-
Enum Constant Detail
-
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
。
-
-
方法详细信息
-
values
public static DayOfWeek[] values()
按照声明的顺序返回一个包含此枚举类型常量的数组。 此方法可用于迭代常量,如下所示:for (DayOfWeek c : DayOfWeek.values()) System.out.println(c);
- 结果
- 包含此枚举类型常量的数组,按声明的顺序排列
-
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
- 表示从星期一(星期一)到7(星期日)的星期几 - 结果
- 星期几单身人士,不是空的
- 异常
-
DateTimeException
- 如果星期几无效
-
from
public static DayOfWeek from(TemporalAccessor temporal)
从时态对象获得DayOfWeek
的实例。这基于指定的时间获得星期几。
TemporalAccessor
表示一组任意日期和时间信息,该工厂将其转换为DayOfWeek
的实例。转换提取
DAY_OF_WEEK
字段。该方法匹配功能接口
TemporalQuery
的签名,允许其通过方法参考DayOfWeek::from
用作查询。- 参数
-
temporal
- 要转换的临时对象,而不是null - 结果
- 星期几,不是空的
- 异常
-
DateTimeException
- 如无法兑换成DayOfWeek
-
getValue
public int getValue()
获取星期几int
值。这些值按照ISO-8601标准编号,从1(星期一)到7(星期日)。 有关本地化的周编号,请参阅
WeekFields.dayOfWeek()
。- 结果
- 星期几,从1(星期一)到7(星期日)
-
getDisplayName
public String getDisplayName(TextStyle style, Locale locale)
- 参数
-
style
- 所需文本的长度,而不是null -
locale
- 要使用的语言环境,而不是null - 结果
- 星期几的文本值,不为空
-
isSupported
public boolean isSupported(TemporalField field)
检查是否支持指定的字段。这将检查是否可以查询指定字段的星期几。 如果为false,则调用
range
和get
方法将引发异常。如果该字段为
DAY_OF_WEEK
,则此方法返回true。 所有其他ChronoField
实例将返回false。如果该字段不是
ChronoField
,则通过调用TemporalField.isSupportedBy(TemporalAccessor)
传递this
作为参数来获得此方法的结果。 字段是否受支持由字段确定。- Specified by:
-
isSupported
在界面TemporalAccessor
- 参数
-
字段
- 要检查的字段,null返回false - 结果
- 如果该字段在此星期几被支持,则为true,否则为false
-
range
public ValueRange range(TemporalField field)
获取指定字段的有效值范围。范围对象表示字段的最小和最大有效值。 这个星期几用于提高返回范围的准确性。 如果无法返回范围,因为不支持该字段或由于某些其他原因,将引发异常。
如果该字段为
DAY_OF_WEEK
,则将返回星期几的范围,从1到7。 所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果该字段不是
ChronoField
,则通过调用this
作为参数调用TemporalField.rangeRefinedBy(TemporalAccessor)
获得此方法的结果。 是否可以获得范围由该字段确定。- Specified by:
-
range
在界面TemporalAccessor
- 参数
-
字段
- 要查询范围的字段,而不是null - 结果
- 字段的有效值范围,不为null
- 异常
-
DateTimeException
- 如果无法获得该字段的范围 -
UnsupportedTemporalTypeException
- 如果不支持该字段
-
get
public int get(TemporalField field)
从int
获取此星期几中指定字段的值。这将查询此星期几的指定字段的值。 返回的值将始终在该字段的有效值范围内。 如果无法返回该值,因为不支持该字段或由于某些其他原因,将引发异常。
如果该字段为
DAY_OF_WEEK
,则将返回星期几的值,从1到7。 所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果该字段不是
ChronoField
,则通过调用TemporalField.getFrom(TemporalAccessor)
传递this
作为参数来获得此方法的结果。 是否可以获得该值以及该值表示的值由该字段确定。- Specified by:
-
get
在界面TemporalAccessor
- 参数
-
字段
- 要获取的字段,而不是null - 结果
- 字段的值,在有效的值范围内
- 异常
-
DateTimeException
- 如果无法获取该字段的值或该值超出该字段的有效值范围 -
UnsupportedTemporalTypeException
- 如果不支持该字段或值的范围超过int
-
ArithmeticException
- 如果发生数字溢出
-
getLong
public long getLong(TemporalField field)
从星期几获取指定字段的值long
。这将查询此星期几的指定字段的值。 如果无法返回该值,因为不支持该字段或由于某些其他原因,将引发异常。
如果该字段为
DAY_OF_WEEK
,则将返回星期几的值,从1到7。 所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果该字段不是
ChronoField
,则通过调用TemporalField.getFrom(TemporalAccessor)
传递this
作为参数来获得此方法的结果。 是否可以获得该值以及该值表示的值由该字段确定。- Specified by:
-
getLong
在界面TemporalAccessor
- 参数
-
字段
- 要获取的字段,而不是null - 结果
- 该字段的值
- 异常
-
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
作为参数。- Specified by:
-
query
在界面TemporalAccessor
- 参数类型
-
R
- 结果的类型 - 参数
-
query
- 要调用的查询,而不是null - 结果
- 查询结果,可以返回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)
更清楚地反转调用模式:// these two lines are equivalent, but the second approach is recommended temporal = thisDayOfWeek.adjustInto(temporal); temporal = temporal.with(thisDayOfWeek);
例如,给定星期三的日期,输出以下内容:
dateOnWed.with(MONDAY); // two days earlier dateOnWed.with(TUESDAY); // one day earlier dateOnWed.with(WEDNESDAY); // same date dateOnWed.with(THURSDAY); // one day later dateOnWed.with(FRIDAY); // two days later dateOnWed.with(SATURDAY); // three days later dateOnWed.with(SUNDAY); // four days later
此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
adjustInto
在界面TemporalAdjuster
- 参数
-
temporal
- 要调整的目标对象,而不是null - 结果
- 调整后的对象,不为空
- 异常
-
DateTimeException
- 如果无法进行调整 -
ArithmeticException
- 如果发生数字溢出
-
-