@Override protected ChronoLocalDate chronoLocalDateOf(final HijrahEra era, final int prolepticYear, final int month, final int dayOfMonth) { return era != null ? HijrahDate.of(prolepticYear, month, dayOfMonth) : null; }
@Override protected ChronoLocalDate chronoLocalDateOf(final HijrahEra era, final int prolepticYear, final int month, final int dayOfMonth) { return era != null ? HijrahDate.of(prolepticYear, month, dayOfMonth) : null; }
@Override protected ChronoLocalDate chronoLocalDateOf(final HijrahEra era, final int prolepticYear, final int month, final int dayOfMonth) { return era != null ? HijrahDate.of(prolepticYear, month, dayOfMonth) : null; }
@Override protected ChronoLocalDate chronoLocalDateOf(final HijrahEra era, final int prolepticYear, final int month, final int dayOfMonth) { return era != null ? HijrahDate.of(prolepticYear, month, dayOfMonth) : null; }
@Override // override with covariant return type public HijrahDate date(int prolepticYear, int month, int dayOfMonth) { return HijrahDate.of(prolepticYear, month, dayOfMonth); }
public static HijrahDate of(int prolepticYear, int month, int dayOfMonth) { return HijrahDate.of(prolepticYear, month, dayOfMonth); }
/** * Obtains an instance of {@code HijrahDate} from the Hijrah era year, * month-of-year and day-of-month. This uses the Hijrah era. * * @param prolepticYear the proleptic year to represent in the Hijrah * @param monthOfYear the month-of-year to represent, from 1 to 12 * @param dayOfMonth the day-of-month to represent, from 1 to 30 * @return the Hijrah date, never null * @throws IllegalCalendarFieldValueException if the value of any field is out of range * @throws InvalidCalendarFieldException if the day-of-month is invalid for the month-year */ public static HijrahDate of(int prolepticYear, int monthOfYear, int dayOfMonth) { return (prolepticYear >= 1) ? HijrahDate.of(HijrahEra.AH, prolepticYear, monthOfYear, dayOfMonth) : HijrahDate.of(HijrahEra.BEFORE_AH, 1 - prolepticYear, monthOfYear, dayOfMonth); }
@Override // override with covariant return type public HijrahDate dateYearDay(int prolepticYear, int dayOfYear) { return HijrahDate.of(prolepticYear, 1, 1).plusDays(dayOfYear - 1); // TODO better }
private static HijrahDate resolvePreviousValid(int yearOfEra, int month, int day) { int monthDays = getMonthDays(month - 1, yearOfEra); if (day > monthDays) { day = monthDays; } return HijrahDate.of(yearOfEra, month, day); }
@Override HijrahDate plusYears(long years) { if (years == 0) { return this; } int newYear = Jdk8Methods.safeAdd(this.yearOfEra, (int)years); return HijrahDate.of(this.era, newYear, this.monthOfYear, this.dayOfMonth); }
@Override public HijrahDate dateEpochDay(long epochDay) { return HijrahDate.of(LocalDate.ofEpochDay(epochDay)); }
@Override HijrahDate plusMonths(long months) { if (months == 0) { return this; } int newMonth = this.monthOfYear - 1; newMonth = newMonth + (int)months; int years = newMonth / 12; newMonth = newMonth % 12; while (newMonth < 0) { newMonth += 12; years = Jdk8Methods.safeSubtract(years, 1); } int newYear = Jdk8Methods.safeAdd(this.yearOfEra, years); return HijrahDate.of(this.era, newYear, newMonth + 1, this.dayOfMonth); }