/** * Reconstitutes this object from a stream. * * @param stream object input stream */ private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); this.era = JapaneseEra.from(isoDate); int yearOffset = this.era.startDate().getYear() - 1; this.yearOfEra = isoDate.getYear() - yearOffset; }
@Override public int prolepticYear(Era era, int yearOfEra) { if (era instanceof JapaneseEra == false) { throw new ClassCastException("Era must be JapaneseEra"); } JapaneseEra jera = (JapaneseEra) era; int isoYear = jera.startDate().getYear() + yearOfEra - 1; ValueRange range = ValueRange.of(1, jera.endDate().getYear() - jera.startDate().getYear() + 1); range.checkValidValue(yearOfEra, YEAR_OF_ERA); return isoYear; }
/** * Returns the start date of the era. * @return the start date */ LocalDate endDate() { int ordinal = ordinal(eraValue); JapaneseEra[] eras = values(); if (ordinal >= eras.length - 1) { return LocalDate.MAX; } return eras[ordinal + 1].startDate().minusDays(1); }
private long getDayOfYear() { if (yearOfEra == 1) { return isoDate.getDayOfYear() - era.startDate().getDayOfYear() + 1; } return isoDate.getDayOfYear(); }
private JapaneseDate resolveEYD(Map<TemporalField, Long> fieldValues, ResolverStyle resolverStyle, JapaneseEra era, int yoe) { if (resolverStyle == ResolverStyle.LENIENT) { int y = era.startDate().getYear() + yoe - 1; long days = Jdk8Methods.safeSubtract(fieldValues.remove(DAY_OF_YEAR), 1); return dateYearDay(y, 1).plus(days, DAYS); } int doy = range(DAY_OF_YEAR).checkValidIntValue(fieldValues.remove(DAY_OF_YEAR), DAY_OF_YEAR); return dateYearDay(era, yoe, doy); // smart is same as strict }
/** * Creates an instance from an ISO date. * * @param isoDate the standard local date, validated not null */ JapaneseDate(LocalDate isoDate) { if (isoDate.isBefore(MIN_DATE)) { throw new DateTimeException("Minimum supported date is January 1st Meiji 6"); } this.era = JapaneseEra.from(isoDate); int yearOffset = this.era.startDate().getYear() - 1; this.yearOfEra = isoDate.getYear() - yearOffset; this.isoDate = isoDate; }
private JapaneseDate resolveEYMD(Map<TemporalField, Long> fieldValues, ResolverStyle resolverStyle, JapaneseEra era, int yoe) { if (resolverStyle == ResolverStyle.LENIENT) { int y = era.startDate().getYear() + yoe - 1; long months = Jdk8Methods.safeSubtract(fieldValues.remove(MONTH_OF_YEAR), 1); long days = Jdk8Methods.safeSubtract(fieldValues.remove(DAY_OF_MONTH), 1); throw new DateTimeException("Invalid YearOfEra: " + yoe); int y = era.startDate().getYear() + yoe - 1; if (dom > 28) { dom = Math.min(dom, date(y, moy, 1).lengthOfMonth());
JapaneseEra[] eras = JapaneseEra.values(); int maxIso = eras[eras.length - 1].endDate().getYear(); int maxJapanese = maxIso - eras[eras.length - 1].startDate().getYear() + 1; int min = Integer.MAX_VALUE; for (int i = 0; i < eras.length; i++) { min = Math.min(min, eras[i].endDate().getYear() - eras[i].startDate().getYear() + 1); int min = 366; for (int i = 0; i < eras.length; i++) { min = Math.min(min, eras[i].startDate().lengthOfYear() - eras[i].startDate().getDayOfYear() + 1);
throw new DateTimeException("Invalid YearOfEra: " + yearOfEra); LocalDate eraStartDate = era.startDate(); LocalDate eraEndDate = era.endDate(); int yearOffset = eraStartDate.getYear() - 1;
throw new DateTimeException("Invalid YearOfEra: " + yearOfEra); LocalDate eraStartDate = era.startDate(); LocalDate eraEndDate = era.endDate(); if (yearOfEra == 1) {