Java 8 führte in Calendar die neue statische innere Klasse Builder ein, mit der sich leicht Calendar-Exemplare mit gesetzten Feldern aufbauen lassen. Die allgemeine Schreibweise ist wie folgt:
Calendar cal = new Calendar.Builder().setXXX( … ).setXXX( … ).setXXX( … ).build();
Zum Setzen von Feldern gibt es setXXX(…)-Methoden, am Ende folgt ein Aufruf von build(), der ein fertiges Calendar-Objekt liefert.
static class java.util.Calendar.Builder
§ Calendar.Builder setDate(int year, int month, int dayOfMonth)
§ Calendar.Builder set(int field, int value)
§ Calendar.Builder setFields(int… fieldValuePairs)
§ Calendar.Builder setInstant(Date instant)
§ Calendar.Builder setInstant(long instant)
§ Calendar.Builder setTimeOfDay(int hourOfDay, int minute, int second)
§ Calendar.Builder setTimeOfDay(int hourOfDay, int minute, int second, int millis)
§ Calendar.Builder setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
§ Calendar.Builder setTimeZone(TimeZone zone)
Etwas weniger gebräuchliche Mehtoden sind weiterhin setCalendarType(String type) – was Rückgaben von Calendar.getAvailableCalendarTypes() erlaubt und alternativ zu „gregory“ auch “gregorian“ bzw. “ iso8601“ –, setLenient(boolean lenient), setLocale(Locale locale) und setWeekDefinition(int firstDayOfWeek, int minimalDaysInFirstWeek).