下面列出了java.time.LocalDate#getDayOfMonth ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* @return the start of last month at 0am in the current timezone
*/
public static Date getStartOfLastMonth() {
LocalDate now = LocalDate.now();
int daysthismonth = now.getDayOfMonth();
int dayslastmonth = now.minusDays(daysthismonth).getDayOfMonth();
return Date.from(LocalDate.now().minusDays(daysthismonth + dayslastmonth - 1).atStartOfDay()
.atZone(ZoneId.systemDefault()).toInstant());
}
private LocalDate previous(LocalDate date) {
int newDayOfMonth = date.getDayOfMonth() - 1;
if (newDayOfMonth > 0) {
return date.withDayOfMonth(newDayOfMonth);
}
date = date.with(date.getMonth().minus(1));
if (date.getMonth() == Month.DECEMBER) {
date = date.withYear(date.getYear() - 1);
}
return date.withDayOfMonth(date.getMonth().length(isIsoLeap(date.getYear())));
}
private LocalDate previous(LocalDate date) {
int newDayOfMonth = date.getDayOfMonth() - 1;
if (newDayOfMonth > 0) {
return date.withDayOfMonth(newDayOfMonth);
}
date = date.with(date.getMonth().minus(1));
if (date.getMonth() == Month.DECEMBER) {
date = date.withYear(date.getYear() - 1);
}
return date.withDayOfMonth(date.getMonth().length(isIsoLeap(date.getYear())));
}
@Override
public double getValue(final AnalyticModel model, final double time) {
final LocalDate calendar = getReferenceDate().plusDays((int) Math.round(time*365));
final int month = calendar.getMonthValue(); // Note: month = 1,2,3,...,12
final int day = calendar.getDayOfMonth(); // Note: day = 1,2,3,...,numberOfDays
final int numberOfDays = calendar.lengthOfMonth();
final double season = (month-1) / 12.0 + (day-1) / (double)numberOfDays / 12.0;
return baseCurve.getValue(model, season);
}
private LocalDate previous(LocalDate date) {
int newDayOfMonth = date.getDayOfMonth() - 1;
if (newDayOfMonth > 0) {
return date.withDayOfMonth(newDayOfMonth);
}
date = date.with(date.getMonth().minus(1));
if (date.getMonth() == Month.DECEMBER) {
date = date.withYear(date.getYear() - 1);
}
return date.withDayOfMonth(date.getMonth().length(isIsoLeap(date.getYear())));
}
private LocalDate previous(LocalDate date) {
int newDayOfMonth = date.getDayOfMonth() - 1;
if (newDayOfMonth > 0) {
return date.withDayOfMonth(newDayOfMonth);
}
date = date.with(date.getMonth().minus(1));
if (date.getMonth() == Month.DECEMBER) {
date = date.withYear(date.getYear() - 1);
}
return date.withDayOfMonth(date.getMonth().length(isIsoLeap(date.getYear())));
}
/**
* Finds the next leap day after the input date.
*
* @param input the input date
* @return the next leap day date
*/
static LocalDate nextLeapDay(LocalDate input) {
// already a leap day, move forward either 4 or 8 years
if (input.getMonthValue() == 2 && input.getDayOfMonth() == 29) {
return ensureLeapDay(input.getYear() + 4);
}
// handle if before February 29 in a leap year
if (input.isLeapYear() && input.getMonthValue() <= 2) {
return LocalDate.of(input.getYear(), 2, 29);
}
// handle any other date
return ensureLeapDay(((input.getYear() / 4) * 4) + 4);
}
private LocalDate previous(LocalDate date) {
int newDayOfMonth = date.getDayOfMonth() - 1;
if (newDayOfMonth > 0) {
return date.withDayOfMonth(newDayOfMonth);
}
date = date.with(date.getMonth().minus(1));
if (date.getMonth() == Month.DECEMBER) {
date = date.withYear(date.getYear() - 1);
}
return date.withDayOfMonth(date.getMonth().length(isIsoLeap(date.getYear())));
}
/**
* isDateAllowed, Return true if a date should be allowed, or false if a date should be
* vetoed.
*/
@Override
public boolean isDateAllowed(LocalDate date) {
// Disallow days 7 to 11.
if ((date.getDayOfMonth() >= 7) && (date.getDayOfMonth() <= 11)) {
return false;
}
// Disallow odd numbered saturdays.
if ((date.getDayOfWeek() == DayOfWeek.SATURDAY) && ((date.getDayOfMonth() % 2) == 1)) {
return false;
}
// Allow all other days.
return true;
}
private int diffConv30v360(final LocalDate start, final LocalDate end) {
int dayStart = start.getDayOfMonth();
int dayEnd = end.getDayOfMonth();
if (dayEnd == CalculatorConstants.MONTH_31_DAYS && dayStart >= CalculatorConstants.MONTH_30_DAYS) {
dayEnd = CalculatorConstants.MONTH_30_DAYS;
}
if (dayStart == CalculatorConstants.MONTH_31_DAYS) {
dayStart = CalculatorConstants.MONTH_30_DAYS;
}
return (end.getYear() - start.getYear()) * CalculatorConstants.YEAR_360 + (end.getMonthValue() - start.getMonthValue()) * CalculatorConstants.MONTH_30_DAYS + dayEnd - dayStart;
}
private LocalDate next(LocalDate date) {
int newDayOfMonth = date.getDayOfMonth() + 1;
if (newDayOfMonth <= date.getMonth().length(isIsoLeap(date.getYear()))) {
return date.withDayOfMonth(newDayOfMonth);
}
date = date.withDayOfMonth(1);
if (date.getMonth() == Month.DECEMBER) {
date = date.withYear(date.getYear() + 1);
}
return date.with(date.getMonth().plus(1));
}
@SuppressWarnings("deprecation")
@Test(dataProvider="date")
public void test_date_parse(LocalDate date, FormatStyle dateStyle, int dateStyleOld, Locale locale) {
DateFormat old = DateFormat.getDateInstance(dateStyleOld, locale);
Date oldDate = new Date(date.getYear() - 1900, date.getMonthValue() - 1, date.getDayOfMonth());
String text = old.format(oldDate);
DateTimeFormatter f = builder.appendLocalized(dateStyle, null).toFormatter(locale);
TemporalAccessor parsed = f.parse(text, pos);
assertEquals(pos.getIndex(), text.length());
assertEquals(pos.getErrorIndex(), -1);
assertEquals(LocalDate.from(parsed), date);
}
public Integer day(LocalDate date) {
if (date == null) {
return null;
}
return date.getDayOfMonth();
}
@SuppressWarnings("deprecation")
@Test(dataProvider="date")
public void test_date_print(LocalDate date, FormatStyle dateStyle, int dateStyleOld, Locale locale) {
DateFormat old = DateFormat.getDateInstance(dateStyleOld, locale);
Date oldDate = new Date(date.getYear() - 1900, date.getMonthValue() - 1, date.getDayOfMonth());
String text = old.format(oldDate);
DateTimeFormatter f = builder.appendLocalized(dateStyle, null).toFormatter(locale);
String formatted = f.format(date);
assertEquals(formatted, text);
}
private LocalDate next(LocalDate date) {
int newDayOfMonth = date.getDayOfMonth() + 1;
if (newDayOfMonth <= date.getMonth().length(isIsoLeap(date.getYear()))) {
return date.withDayOfMonth(newDayOfMonth);
}
date = date.withDayOfMonth(1);
if (date.getMonth() == Month.DECEMBER) {
date = date.withYear(date.getYear() + 1);
}
return date.with(date.getMonth().plus(1));
}
@SuppressWarnings("deprecation")
@Test(dataProvider="date")
public void test_date_parse(LocalDate date, FormatStyle dateStyle, int dateStyleOld, Locale locale) {
DateFormat old = DateFormat.getDateInstance(dateStyleOld, locale);
Date oldDate = new Date(date.getYear() - 1900, date.getMonthValue() - 1, date.getDayOfMonth());
String text = old.format(oldDate);
DateTimeFormatter f = builder.appendLocalized(dateStyle, null).toFormatter(locale);
TemporalAccessor parsed = f.parse(text, pos);
assertEquals(pos.getIndex(), text.length());
assertEquals(pos.getErrorIndex(), -1);
assertEquals(LocalDate.from(parsed), date);
}
private static boolean isEqual(LocalDate ld, java.sql.Date d) {
return ld.getYear() == d.getYear() + 1900 &&
ld.getMonthValue() == d.getMonth() + 1 &&
ld.getDayOfMonth() == d.getDate();
}
int getDay(LocalDate localDate) {
return localDate.getDayOfMonth();
}
@Override
public boolean matches(LocalDate date) {
ArgChecker.notNull(date, "date");
return date.getDayOfMonth() == day ||
(date.getMonthValue() == 2 && day >= date.lengthOfMonth() && date.getDayOfMonth() == date.lengthOfMonth());
}
/**
* Finds the day-of-year of the date.
* <p>
* Faster than the JDK method.
*
* @param date the date to query
* @return the day-of-year
*/
static int doy(LocalDate date) {
int[] lookup = (date.isLeapYear() ? LEAP : STANDARD);
return lookup[date.getMonthValue()] + date.getDayOfMonth();
}