public final class WeekFields
extends java.lang.Object
implements java.io.Serializable
A standard week is seven days long, but cultures have different definitions for some
other aspects of a week. This class represents the definition of the week, for the
purpose of providing TemporalField
instances.
WeekFields provides three fields,
dayOfWeek()
, weekOfMonth()
, and weekOfYear()
that provide access to the values from any temporal object.
The computations for day-of-week, week-of-month, and week-of-year are based on the proleptic-year, month-of-year, day-of-month, and ISO day-of-week which are based on the epoch-day and the chronology. The values may not be aligned with the year-of-Era depending on the Chronology.
A week is defined by:
Together these two values allow a year or month to be divided into weeks.
Date | Day-of-week | First day: Monday Minimal days: 4 | First day: Monday Minimal days: 5 |
---|---|---|---|
2008-12-31 | Wednesday | Week 5 of December 2008 | Week 5 of December 2008 |
2009-01-01 | Thursday | Week 1 of January 2009 | Week 0 of January 2009 |
2009-01-04 | Sunday | Week 1 of January 2009 | Week 0 of January 2009 |
2009-01-05 | Monday | Week 2 of January 2009 | Week 1 of January 2009 |
This class is immutable and thread-safe.
Modifier and Type | Field and Description |
---|---|
static WeekFields |
ISO
The ISO-8601 definition, where a week starts on Monday and the first week
has a minimum of 4 days.
|
static WeekFields |
SUNDAY_START
The common definition of a week that starts on Sunday.
|
Modifier and Type | Method and Description |
---|---|
TemporalField |
dayOfWeek()
Returns a field to access the day of week,
computed based on this WeekFields.
|
boolean |
equals(java.lang.Object object)
Checks if these rules are equal to the specified rules.
|
DayOfWeek |
getFirstDayOfWeek()
Gets the first day-of-week.
|
int |
getMinimalDaysInFirstWeek()
Gets the minimal number of days in the first week.
|
int |
hashCode()
A hash code for these rules.
|
static WeekFields |
of(DayOfWeek firstDayOfWeek,
int minimalDaysInFirstWeek)
Obtains an instance of
WeekFields from the first day-of-week and minimal days. |
static WeekFields |
of(java.util.Locale locale)
Obtains an instance of
WeekFields appropriate for a locale. |
java.lang.String |
toString()
A string representation of this definition.
|
TemporalField |
weekOfMonth()
Returns a field to access the week of month,
computed based on this WeekFields.
|
TemporalField |
weekOfYear()
Returns a field to access the week of year,
computed based on this WeekFields.
|
public static final WeekFields ISO
The ISO-8601 standard defines a calendar system based on weeks. It uses the week-based-year and week-of-week-based-year concepts to split up the passage of days instead of the standard year/month/day.
Note that the first week may start in the previous calendar year. Note also that the first few days of a calendar year may be in the week-based-year corresponding to the previous calendar year.
public static final WeekFields SUNDAY_START
Defined as starting on Sunday and with a minimum of 1 day in the month. This week definition is in use in the US and other European countries.
public static WeekFields of(java.util.Locale locale)
WeekFields
appropriate for a locale.
This will look up appropriate values from the provider of localization data.
locale
- the locale to use, not nullpublic static WeekFields of(DayOfWeek firstDayOfWeek, int minimalDaysInFirstWeek)
WeekFields
from the first day-of-week and minimal days.
The first day-of-week defines the ISO DayOfWeek
that is day 1 of the week.
The minimal number of days in the first week defines how many days must be present
in a month or year, starting from the first day-of-week, before the week is counted
as the first week. A value of 1 will count the first day of the month or year as part
of the first week, whereas a value of 7 will require the whole seven days to be in
the new month or year.
WeekFields instances are singletons; for each unique combination
of firstDayOfWeek
and minimalDaysInFirstWeek
the
the same instance will be returned.
firstDayOfWeek
- the first day of the week, not nullminimalDaysInFirstWeek
- the minimal number of days in the first week, from 1 to 7java.lang.IllegalArgumentException
- if the minimal days value is less than one
or greater than 7public DayOfWeek getFirstDayOfWeek()
The first day-of-week varies by culture.
For example, the US uses Sunday, while France and the ISO-8601 standard use Monday.
This method returns the first day using the standard DayOfWeek
enum.
public int getMinimalDaysInFirstWeek()
The number of days considered to define the first week of a month or year varies by culture. For example, the ISO-8601 requires 4 days (more than half a week) to be present before counting the first week.
public TemporalField dayOfWeek()
The days of week are numbered from 1 to 7.
Day number 1 is the first day-of-week
.
public TemporalField weekOfMonth()
This represents concept of the count of weeks within the month where weeks
start on a fixed day-of-week, such as Monday.
This field is typically used with dayOfWeek()
.
Week one (1) is the week starting on the getFirstDayOfWeek()
where there are at least getMinimalDaysInFirstWeek()
days in the month.
Thus, week one may start up to minDays
days before the start of the month.
If the first week starts after the start of the month then the period before is week zero (0).
For example:
- if the 1st day of the month is a Monday, week one starts on the 1st and there is no week zero
- if the 2nd day of the month is a Monday, week one starts on the 2nd and the 1st is in week zero
- if the 4th day of the month is a Monday, week one starts on the 4th and the 1st to 3rd is in week zero
- if the 5th day of the month is a Monday, week two starts on the 5th and the 1st to 4th is in week one
This field can be used with any calendar system.
public TemporalField weekOfYear()
This represents concept of the count of weeks within the year where weeks
start on a fixed day-of-week, such as Monday.
This field is typically used with dayOfWeek()
.
Week one(1) is the week starting on the getFirstDayOfWeek()
where there are at least getMinimalDaysInFirstWeek()
days in the month.
Thus, week one may start up to minDays
days before the start of the year.
If the first week starts after the start of the year then the period before is week zero (0).
For example:
- if the 1st day of the year is a Monday, week one starts on the 1st and there is no week zero
- if the 2nd day of the year is a Monday, week one starts on the 2nd and the 1st is in week zero
- if the 4th day of the year is a Monday, week one starts on the 4th and the 1st to 3rd is in week zero
- if the 5th day of the year is a Monday, week two starts on the 5th and the 1st to 4th is in week one
This field can be used with any calendar system.
public boolean equals(java.lang.Object object)
The comparison is based on the entire state of the rules, which is the first day-of-week and minimal days.
equals
in class java.lang.Object
object
- the other rules to compare to, null returns falseObject.hashCode()
,
HashMap
public int hashCode()
hashCode
in class java.lang.Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public java.lang.String toString()
toString
in class java.lang.Object