Calendarpublic static class Calendar.Builder extends Object
Calendar.Builder is used for creating a Calendar from various date-time parameters. There are two ways to set a Calendar to a date-time value. One is to set the instant parameter to a millisecond offset from the Epoch. The other is to set individual field parameters, such as YEAR, to their desired values. These two ways can't be mixed. Trying to set both the instant and individual fields will cause an IllegalStateException to be thrown. However, it is permitted to override previous values of the instant or field parameters. 
If no enough field parameters are given for determining date and/or time, calendar specific default values are used when building a Calendar. For example, if the YEAR value isn't given for the Gregorian calendar, 1970 will be used. If there are any conflicts among field parameters, the  resolution rules are applied. Therefore, the order of field setting matters. 
In addition to the date-time parameters, the locale, time zone, week definition, and leniency mode parameters can be set.
Examples
The following are sample usages. Sample code assumes that the Calendar constants are statically imported. 
The following code produces a Calendar with date 2012-12-31 (Gregorian) because Monday is the first day of a week with the  ISO 8601 compatible week parameters. 
   Calendar cal = new Calendar.Builder().setCalendarType("iso8601")
                        .setWeekDate(2013, 1, MONDAY).build(); The following code produces a Japanese Calendar with date 1989-01-08 (Gregorian), assuming that the default ERA is Heisei that started on that day. 
   Calendar cal = new Calendar.Builder().setCalendarType("japanese")
                        .setFields(YEAR, 1, DAY_OF_YEAR, 1).build();
| Constructor | Description | 
|---|---|
| Builder() | Constructs a  Calendar.Builder. | 
| Modifier and Type | Method | Description | 
|---|---|---|
| Calendar | build() | Returns a  Calendarbuilt from the parameters set by the setter methods. | 
| Calendar.Builder | set | Sets the  fieldparameter to the givenvalue. | 
| Calendar.Builder | setCalendarType | Sets the calendar type parameter to the given  type. | 
| Calendar.Builder | setDate | Sets the date field parameters to the values given by  year,month, anddayOfMonth. | 
| Calendar.Builder | setFields | Sets field parameters to their values given by  fieldValuePairsthat are pairs of a field and its value. | 
| Calendar.Builder | setInstant | Sets the instant parameter to the given  instantvalue that is a millisecond offset from the Epoch. | 
| Calendar.Builder | setInstant | Sets the instant parameter to the  instantvalue given by aDate. | 
| Calendar.Builder | setLenient | Sets the lenient mode parameter to the value given by  lenient. | 
| Calendar.Builder | setLocale | Sets the locale parameter to the given  locale. | 
| Calendar.Builder | setTimeOfDay | Sets the time of day field parameters to the values given by  hourOfDay,minute, andsecond. | 
| Calendar.Builder | setTimeOfDay | Sets the time of day field parameters to the values given by  hourOfDay,minute,second, andmillis. | 
| Calendar.Builder | setTimeZone | Sets the time zone parameter to the given  zone. | 
| Calendar.Builder | setWeekDate | Sets the week-based date parameters to the values with the given date specifiers - week year, week of year, and day of week. | 
| Calendar.Builder | setWeekDefinition | Sets the week definition parameters to the values given by  firstDayOfWeekandminimalDaysInFirstWeekthat are used to determine the first week of a year. | 
public Builder()
Calendar.Builder.public Calendar.Builder setInstant(long instant)
instant value that is a millisecond offset from the Epoch.instant - a millisecond offset from the EpochCalendar.Builder
IllegalStateException - if any of the field parameters have already been setpublic Calendar.Builder setInstant(Date instant)
instant value given by a Date. This method is equivalent to a call to setInstant(instant.getTime()).instant - a Date representing a millisecond offset from the EpochCalendar.Builder
NullPointerException - if instant is null
IllegalStateException - if any of the field parameters have already been setpublic Calendar.Builder set(int field, int value)
field parameter to the given value. field is an index to the Calendar.fields, such as DAY_OF_MONTH. Field value validation is not performed in this method. Any out of range values are either normalized in lenient mode or detected as an invalid value in non-lenient mode when building a Calendar.field - an index to the Calendar fieldsvalue - the field valueCalendar.Builder
IllegalArgumentException - if field is invalidIllegalStateException - if the instant value has already been set, or if fields have been set too many (approximately Integer.MAX_VALUE) times.public Calendar.Builder setFields(int... fieldValuePairs)
fieldValuePairs that are pairs of a field and its value. For example, 
   setFields(Calendar.YEAR, 2013,
             Calendar.MONTH, Calendar.DECEMBER,
             Calendar.DAY_OF_MONTH, 23); is equivalent to the sequence of the following set calls: set(Calendar.YEAR, 2013) .set(Calendar.MONTH, Calendar.DECEMBER) .set(Calendar.DAY_OF_MONTH, 23);
fieldValuePairs - field-value pairsCalendar.Builder
NullPointerException - if fieldValuePairs is null
IllegalArgumentException - if any of fields are invalid, or if fieldValuePairs.length is an odd number.IllegalStateException - if the instant value has been set, or if fields have been set too many (approximately Integer.MAX_VALUE) times.public Calendar.Builder setDate(int year, int month, int dayOfMonth)
year, month, and dayOfMonth. This method is equivalent to a call to: 
   setFields(Calendar.YEAR, year,
             Calendar.MONTH, month,
             Calendar.DAY_OF_MONTH, dayOfMonth);
year - the YEAR valuemonth - the MONTH value (the month numbering is 0-based).dayOfMonth - the DAY_OF_MONTH valueCalendar.Builder
public Calendar.Builder setTimeOfDay(int hourOfDay, int minute, int second)
hourOfDay, minute, and second. This method is equivalent to a call to: setTimeOfDay(hourOfDay, minute, second, 0);
hourOfDay - the HOUR_OF_DAY value (24-hour clock)minute - the MINUTE valuesecond - the SECOND valueCalendar.Builder
public Calendar.Builder setTimeOfDay(int hourOfDay, int minute, int second, int millis)
hourOfDay, minute, second, and millis. This method is equivalent to a call to: 
   setFields(Calendar.HOUR_OF_DAY, hourOfDay,
             Calendar.MINUTE, minute,
             Calendar.SECOND, second,
             Calendar.MILLISECOND, millis);
hourOfDay - the HOUR_OF_DAY value (24-hour clock)minute - the MINUTE valuesecond - the SECOND valuemillis - the MILLISECOND valueCalendar.Builder
public Calendar.Builder setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
If the specified calendar doesn't support week dates, the build method will throw an IllegalArgumentException.
weekYear - the week yearweekOfYear - the week number based on weekYear
dayOfWeek - the day of week value: one of the constants for the DAY_OF_WEEK field: SUNDAY, ..., SATURDAY.Calendar.Builder
public Calendar.Builder setTimeZone(TimeZone zone)
zone. If no time zone parameter is given to this Calendar.Builder, the default TimeZone will be used in the build method.zone - the TimeZone
Calendar.Builder
NullPointerException - if zone is null
public Calendar.Builder setLenient(boolean lenient)
lenient. If no lenient parameter is given to this Calendar.Builder, lenient mode will be used in the build method.lenient - true for lenient mode; false for non-lenient modeCalendar.Builder
public Calendar.Builder setCalendarType(String type)
type. The calendar type given by this method has precedence over any explicit or implicit calendar type given by the locale. In addition to the available calendar types returned by the Calendar.getAvailableCalendarTypes method, "gregorian" and "iso8601" as aliases of "gregory" can be used with this method.
type - the calendar typeCalendar.Builder
NullPointerException - if type is null
IllegalArgumentException - if type is unknownIllegalStateException - if another calendar type has already been setpublic Calendar.Builder setLocale(Locale locale)
locale. If no locale is given to this Calendar.Builder, the default Locale for Locale.Category.FORMAT will be used. If no calendar type is explicitly given by a call to the setCalendarType method, the Locale value is used to determine what type of Calendar to be built. 
If no week definition parameters are explicitly given by a call to the setWeekDefinition method, the Locale's default values are used.
locale - the Locale
Calendar.Builder
NullPointerException - if locale is null
public Calendar.Builder setWeekDefinition(int firstDayOfWeek, int minimalDaysInFirstWeek)
firstDayOfWeek and minimalDaysInFirstWeek that are used to determine the first week of a year. The parameters given by this method have precedence over the default values given by the locale.firstDayOfWeek - the first day of a week; one of Calendar.SUNDAY to Calendar.SATURDAY
minimalDaysInFirstWeek - the minimal number of days in the first week (1..7)Calendar.Builder
IllegalArgumentException - if firstDayOfWeek or minimalDaysInFirstWeek is invalidpublic Calendar build()
Calendar built from the parameters set by the setter methods. The calendar type given by the setCalendarType method or the locale is used to determine what Calendar to be created. If no explicit calendar type is given, the locale's default calendar is created. If the calendar type is "iso8601", the Gregorian change date of a GregorianCalendar is set to Date(Long.MIN_VALUE) to be the proleptic Gregorian calendar. Its week definition parameters are also set to be compatible with the ISO 8601 standard. Note that the getCalendarType method of a GregorianCalendar created with "iso8601" returns "gregory". 
The default values are used for locale and time zone if these parameters haven't been given explicitly.
If the locale contains the time zone with "tz" Unicode extension, and time zone hasn't been given explicitly, time zone in the locale is used.
Any out of range field values are either normalized in lenient mode or detected as an invalid value in non-lenient mode.
Calendar built with parameters of this 
         Calendar.Builder
IllegalArgumentException - if the calendar type is unknown, or if any invalid field values are given in non-lenient mode, or if a week date is given for the calendar type that doesn't support week dates.
    © 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
    https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Calendar.Builder.html