下面列出了java.time.temporal.ChronoField#DAY_OF_MONTH 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static ChronoField getPrecision(TemporalAccessor temporalAccessor, String text) {
if (temporalAccessor instanceof Year) {
return ChronoField.YEAR;
}
if (temporalAccessor instanceof YearMonth) {
return ChronoField.MONTH_OF_YEAR;
}
if (temporalAccessor instanceof LocalDate) {
return ChronoField.DAY_OF_MONTH;
}
if (temporalAccessor instanceof LocalDateTime ||
temporalAccessor instanceof ZonedDateTime ||
temporalAccessor instanceof LocalTime) {
if (text != null) {
return getPrecision(text);
}
return (temporalAccessor instanceof ZonedDateTime) ?
ChronoField.OFFSET_SECONDS : ChronoField.MICRO_OF_SECOND;
}
throw new IllegalArgumentException();
}
@DataProvider(name = "localeDisplayNames")
Object[][] data_localeDisplayNames() {
return new Object[][] {
{ChronoField.ERA},
{ChronoField.YEAR},
{ChronoField.MONTH_OF_YEAR},
{ChronoField.DAY_OF_WEEK},
// {ChronoField.ALIGNED_WEEK_OF_YEAR},
{ChronoField.DAY_OF_MONTH},
{ChronoField.AMPM_OF_DAY},
{ChronoField.HOUR_OF_DAY},
{ChronoField.MINUTE_OF_HOUR},
{ChronoField.SECOND_OF_MINUTE},
};
}
@DataProvider(name = "localeDisplayNames")
Object[][] data_localeDisplayNames() {
return new Object[][] {
{ChronoField.ERA},
{ChronoField.YEAR},
{ChronoField.MONTH_OF_YEAR},
{ChronoField.DAY_OF_WEEK},
// {ChronoField.ALIGNED_WEEK_OF_YEAR},
{ChronoField.DAY_OF_MONTH},
{ChronoField.AMPM_OF_DAY},
{ChronoField.HOUR_OF_DAY},
{ChronoField.MINUTE_OF_HOUR},
{ChronoField.SECOND_OF_MINUTE},
};
}
@DataProvider(name = "localeDisplayNames")
Object[][] data_localeDisplayNames() {
return new Object[][] {
{ChronoField.ERA},
{ChronoField.YEAR},
{ChronoField.MONTH_OF_YEAR},
{ChronoField.DAY_OF_WEEK},
// {ChronoField.ALIGNED_WEEK_OF_YEAR},
{ChronoField.DAY_OF_MONTH},
{ChronoField.AMPM_OF_DAY},
{ChronoField.HOUR_OF_DAY},
{ChronoField.MINUTE_OF_HOUR},
{ChronoField.SECOND_OF_MINUTE},
};
}
@DataProvider(name = "localeDisplayNames")
Object[][] data_localeDisplayNames() {
return new Object[][] {
{ChronoField.ERA},
{ChronoField.YEAR},
{ChronoField.MONTH_OF_YEAR},
{ChronoField.DAY_OF_WEEK},
// {ChronoField.ALIGNED_WEEK_OF_YEAR},
{ChronoField.DAY_OF_MONTH},
{ChronoField.AMPM_OF_DAY},
{ChronoField.HOUR_OF_DAY},
{ChronoField.MINUTE_OF_HOUR},
{ChronoField.SECOND_OF_MINUTE},
};
}
@DataProvider(name = "localeDisplayNames")
Object[][] data_localeDisplayNames() {
return new Object[][] {
{ChronoField.ERA},
{ChronoField.YEAR},
{ChronoField.MONTH_OF_YEAR},
{ChronoField.DAY_OF_WEEK},
// {ChronoField.ALIGNED_WEEK_OF_YEAR},
{ChronoField.DAY_OF_MONTH},
{ChronoField.AMPM_OF_DAY},
{ChronoField.HOUR_OF_DAY},
{ChronoField.MINUTE_OF_HOUR},
{ChronoField.SECOND_OF_MINUTE},
};
}
@DataProvider(name = "localeDisplayNames")
Object[][] data_localeDisplayNames() {
return new Object[][] {
{ChronoField.ERA},
{ChronoField.YEAR},
{ChronoField.MONTH_OF_YEAR},
{ChronoField.DAY_OF_WEEK},
// {ChronoField.ALIGNED_WEEK_OF_YEAR},
{ChronoField.DAY_OF_MONTH},
{ChronoField.AMPM_OF_DAY},
{ChronoField.HOUR_OF_DAY},
{ChronoField.MINUTE_OF_HOUR},
{ChronoField.SECOND_OF_MINUTE},
};
}
@DataProvider(name = "localeDisplayNames")
Object[][] data_localeDisplayNames() {
return new Object[][] {
{ChronoField.ERA},
{ChronoField.YEAR},
{ChronoField.MONTH_OF_YEAR},
{ChronoField.DAY_OF_WEEK},
// {ChronoField.ALIGNED_WEEK_OF_YEAR},
{ChronoField.DAY_OF_MONTH},
{ChronoField.AMPM_OF_DAY},
{ChronoField.HOUR_OF_DAY},
{ChronoField.MINUTE_OF_HOUR},
{ChronoField.SECOND_OF_MINUTE},
};
}
private LocalDate tryParse(String token, int currentYear, DateTimeFormatter fmt)
{
try
{
// workaround for migrating jodatime 'withDefault...' see:
// https://stackoverflow.com/a/49815584/6122976
// init the defaults
LocalDate defaults = LocalDate.of(currentYear, Month.JANUARY, 1);
// parse string
TemporalAccessor parsed = fmt.parse(token);
// override defaults with parsed values
ChronoField[] fieldsToOverride = { ChronoField.YEAR, ChronoField.MONTH_OF_YEAR, ChronoField.DAY_OF_MONTH };
for (TemporalField fieldToOverride : fieldsToOverride)
{
if (parsed.isSupported(fieldToOverride))
{
defaults = defaults.with(fieldToOverride, parsed.getLong(fieldToOverride));
}
}
return defaults;
}
catch (DateTimeParseException e)
{
return null;
}
}
@DataProvider(name = "localeDisplayNames")
Object[][] data_localeDisplayNames() {
return new Object[][] {
{ChronoField.ERA},
{ChronoField.YEAR},
{ChronoField.MONTH_OF_YEAR},
{ChronoField.DAY_OF_WEEK},
// {ChronoField.ALIGNED_WEEK_OF_YEAR},
{ChronoField.DAY_OF_MONTH},
{ChronoField.AMPM_OF_DAY},
{ChronoField.HOUR_OF_DAY},
{ChronoField.MINUTE_OF_HOUR},
{ChronoField.SECOND_OF_MINUTE},
};
}
@DataProvider(name = "localeDisplayNames")
Object[][] data_localeDisplayNames() {
return new Object[][] {
{ChronoField.ERA},
{ChronoField.YEAR},
{ChronoField.MONTH_OF_YEAR},
{ChronoField.DAY_OF_WEEK},
// {ChronoField.ALIGNED_WEEK_OF_YEAR},
{ChronoField.DAY_OF_MONTH},
{ChronoField.AMPM_OF_DAY},
{ChronoField.HOUR_OF_DAY},
{ChronoField.MINUTE_OF_HOUR},
{ChronoField.SECOND_OF_MINUTE},
};
}
Object[][] data_localeDisplayNames() {
return new Object[][] {
{ChronoField.ERA},
{ChronoField.YEAR},
{ChronoField.MONTH_OF_YEAR},
{ChronoField.DAY_OF_WEEK},
// {ChronoField.ALIGNED_WEEK_OF_YEAR},
{ChronoField.DAY_OF_MONTH},
{ChronoField.AMPM_OF_DAY},
{ChronoField.HOUR_OF_DAY},
{ChronoField.MINUTE_OF_HOUR},
{ChronoField.SECOND_OF_MINUTE},
};
}
@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) {
}
}
}
/**
* Creates a matcher that matches when the examined date is on the first day of the month
* <p/>
* For example:
*
* <pre>
* assertThat(myDate, isFirstDayOfMonth());
* </pre>
*/
public static Matcher<ZonedDateTime> isFirstDayOfMonth() {
return new IsMinimum<ZonedDateTime>(ChronoField.DAY_OF_MONTH,
t -> t,
new DatePartFormatter(),
() -> "the date is the first day of the month");
}
/**
* Creates a matcher that matches when the examined date is on the first day of the month
* <p/>
* For example:
*
* <pre>
* assertThat(myDate, isFirstDayOfMonth());
* </pre>
*/
public static Matcher<ZonedDateTime> isLastDayOfMonth() {
return new IsMaximum<ZonedDateTime>(ChronoField.DAY_OF_MONTH,
t -> t,
new DatePartFormatter(),
() -> "the date is the last day of the month");
}
/**
* Creates a matcher that matches when the examined date is on the first day of the month
* <p/>
* For example:
*
* <pre>
* assertThat(myDate, isFirstDayOfMonth());
* </pre>
*/
public static Matcher<Date> isLastDayOfMonth() {
return new IsMaximum<Date>(ChronoField.DAY_OF_MONTH, DateMatchers::dateToZoneDateTime,
new DatePartFormatter(),
() -> "the date is the last day of the month");
}
/**
* Creates a matcher that matches when the examined date is on the first day of the month
* <p/>
* For example:
*
* <pre>
* assertThat(myDate, isFirstDayOfMonth());
* </pre>
*/
public static Matcher<LocalDateTime> isLastDayOfMonth() {
return new IsMaximum<LocalDateTime>(ChronoField.DAY_OF_MONTH, t -> t,
new DatePartFormatter(),
() -> "the date is the last day of the month");
}
/**
* Creates a matcher that matches when the examined date is on the first day of the month
* <p/>
* For example:
*
* <pre>
* assertThat(myDate, isFirstDayOfMonth());
* </pre>
*/
public static Matcher<LocalDate> isFirstDayOfMonth() {
return new IsMinimum<LocalDate>(ChronoField.DAY_OF_MONTH, t -> t,
new DatePartFormatter(),
() -> "the date is the first day of the month");
}
/**
* Creates a matcher that matches when the examined date is on the first day of the month
* <p/>
* For example:
*
* <pre>
* assertThat(myDate, isFirstDayOfMonth());
* </pre>
*/
public static Matcher<LocalDate> isLastDayOfMonth() {
return new IsMaximum<LocalDate>(ChronoField.DAY_OF_MONTH, t -> t,
new DatePartFormatter(),
() -> "the date is the last day of the month");
}
/**
* Creates a matcher that matches when the examined date is on the first day of the month
* <p/>
* For example:
*
* <pre>
* assertThat(myDate, isFirstDayOfMonth());
* </pre>
*/
public static Matcher<Date> isFirstDayOfMonth() {
return new IsMinimum<Date>(ChronoField.DAY_OF_MONTH, DateMatchers::dateToZoneDateTime,
new DatePartFormatter(),
() -> "the date is the first day of the month");
}