下面列出了java.time.temporal.ChronoField#DAY_OF_YEAR 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private static ChronoField getPrecision(String text) {
if (text.endsWith("T")) {
return ChronoField.DAY_OF_YEAR;
}
String time = text.contains("T") ? text.substring(text.indexOf("T") + 1) : text;
if (time.contains("+") || time.contains("-") || time.endsWith("Z")) {
return ChronoField.OFFSET_SECONDS;
}
int count = count(time, ':');
switch (count) {
case 0:
return ChronoField.HOUR_OF_DAY;
case 1:
return ChronoField.MINUTE_OF_HOUR;
case 2:
return ChronoField.MICRO_OF_SECOND;
}
throw new IllegalArgumentException(text);
}
@Override
public boolean accept(ZonedDateTime target, ZonedDateTime now) {
TemporalField field = ChronoField.DAY_OF_YEAR;
return now.get(field) == target.get(field);
}
@Test
public void test_with_TemporalField_long_invalidField() {
ChronoField[] invalidFields = new ChronoField[] {
ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH,
ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR,
ChronoField.ALIGNED_WEEK_OF_MONTH,
ChronoField.ALIGNED_WEEK_OF_YEAR,
ChronoField.AMPM_OF_DAY,
ChronoField.CLOCK_HOUR_OF_AMPM,
ChronoField.CLOCK_HOUR_OF_DAY,
ChronoField.DAY_OF_MONTH,
ChronoField.DAY_OF_WEEK,
ChronoField.DAY_OF_YEAR,
ChronoField.EPOCH_DAY,
ChronoField.HOUR_OF_AMPM,
ChronoField.HOUR_OF_DAY,
ChronoField.INSTANT_SECONDS,
ChronoField.MICRO_OF_DAY,
ChronoField.MICRO_OF_SECOND,
ChronoField.MILLI_OF_DAY,
ChronoField.MILLI_OF_SECOND,
ChronoField.MINUTE_OF_DAY,
ChronoField.MINUTE_OF_HOUR,
ChronoField.NANO_OF_DAY,
ChronoField.NANO_OF_SECOND,
ChronoField.OFFSET_SECONDS,
ChronoField.SECOND_OF_DAY,
ChronoField.SECOND_OF_MINUTE,
};
YearMonth ym = YearMonth.of(2000, Month.JANUARY);
for (ChronoField invalidField : invalidFields) {
// Get a valid value to ensure we fail to due invalid field, not due to invalid value.
long value = invalidField.range().getMinimum();
try {
ym.with(invalidField, value);
fail("TemporalField.with() should not accept " + invalidField);
} catch (UnsupportedTemporalTypeException expected) {
}
}
}