351 ChronoField f = (ChronoField) field;
352 switch (f) {
353 case DAY_OF_MONTH: return ValueRange.of(1, lengthOfMonth());
354 case DAY_OF_YEAR: return ValueRange.of(1, lengthOfYear());
355 case ALIGNED_WEEK_OF_MONTH: return ValueRange.of(1, 5); // TODO
356 // TODO does the limited range of valid years cause years to
357 // start/end part way through? that would affect range
358 }
359 return getChronology().range(f);
360 }
361 throw new UnsupportedTemporalTypeException("Unsupported field: " + field);
362 }
363 return field.rangeRefinedBy(this);
364 }
365
366 @Override
367 public long getLong(TemporalField field) {
368 if (field instanceof ChronoField) {
369 switch ((ChronoField) field) {
370 case DAY_OF_WEEK: return getDayOfWeek();
371 case ALIGNED_DAY_OF_WEEK_IN_MONTH: return ((getDayOfWeek() - 1) % 7) + 1;
372 case ALIGNED_DAY_OF_WEEK_IN_YEAR: return ((getDayOfYear() - 1) % 7) + 1;
373 case DAY_OF_MONTH: return this.dayOfMonth;
374 case DAY_OF_YEAR: return this.getDayOfYear();
375 case EPOCH_DAY: return toEpochDay();
376 case ALIGNED_WEEK_OF_MONTH: return ((dayOfMonth - 1) / 7) + 1;
377 case ALIGNED_WEEK_OF_YEAR: return ((getDayOfYear() - 1) / 7) + 1;
378 case MONTH_OF_YEAR: return monthOfYear;
379 case PROLEPTIC_MONTH: return getProlepticMonth();
380 case YEAR_OF_ERA: return prolepticYear;
381 case YEAR: return prolepticYear;
382 case ERA: return getEraValue();
383 }
384 throw new UnsupportedTemporalTypeException("Unsupported field: " + field);
385 }
386 return field.getFrom(this);
387 }
388
389 private long getProlepticMonth() {
390 return prolepticYear * 12L + monthOfYear - 1;
391 }
|
351 ChronoField f = (ChronoField) field;
352 switch (f) {
353 case DAY_OF_MONTH: return ValueRange.of(1, lengthOfMonth());
354 case DAY_OF_YEAR: return ValueRange.of(1, lengthOfYear());
355 case ALIGNED_WEEK_OF_MONTH: return ValueRange.of(1, 5); // TODO
356 // TODO does the limited range of valid years cause years to
357 // start/end part way through? that would affect range
358 }
359 return getChronology().range(f);
360 }
361 throw new UnsupportedTemporalTypeException("Unsupported field: " + field);
362 }
363 return field.rangeRefinedBy(this);
364 }
365
366 @Override
367 public long getLong(TemporalField field) {
368 if (field instanceof ChronoField) {
369 switch ((ChronoField) field) {
370 case DAY_OF_WEEK: return getDayOfWeek();
371 case ALIGNED_DAY_OF_WEEK_IN_MONTH: return ((dayOfMonth - 1) % 7) + 1;
372 case ALIGNED_DAY_OF_WEEK_IN_YEAR: return ((getDayOfYear() - 1) % 7) + 1;
373 case DAY_OF_MONTH: return this.dayOfMonth;
374 case DAY_OF_YEAR: return this.getDayOfYear();
375 case EPOCH_DAY: return toEpochDay();
376 case ALIGNED_WEEK_OF_MONTH: return ((dayOfMonth - 1) / 7) + 1;
377 case ALIGNED_WEEK_OF_YEAR: return ((getDayOfYear() - 1) / 7) + 1;
378 case MONTH_OF_YEAR: return monthOfYear;
379 case PROLEPTIC_MONTH: return getProlepticMonth();
380 case YEAR_OF_ERA: return prolepticYear;
381 case YEAR: return prolepticYear;
382 case ERA: return getEraValue();
383 }
384 throw new UnsupportedTemporalTypeException("Unsupported field: " + field);
385 }
386 return field.getFrom(this);
387 }
388
389 private long getProlepticMonth() {
390 return prolepticYear * 12L + monthOfYear - 1;
391 }
|