如何比较一组 LocalDate(假期)是否包含给定的 MonthDay?
How to compare if a set of LocalDate (holidays) contains a given MonthDay?
如何提取 LocalDate 中的月日?我需要在明天内解决这个问题,因此我们将不胜感激!
private final Set<MonthDay> recurringHolidays = new HashSet<>();
private final Set<LocalDate> holidays = new HashSet<>();
public void setHoliday(final LocalDate date) {
holidays.add( date );
}
public void setHolidayIfIsRecurring() {
for (LocalDate holidayLocalDate: getHolidays())
for (MonthDay monthDay: getRecurringHolidays()){
LocalDate monthdayToLocalDate = monthDay -------------????
if (!setOfHolidays().contains( monthdayToLocalDate ) ){
setHoliday( (monthDay) );
}
}
}
LocalDate
→MonthDay
您可以使用 MonthDay#from(TemporalAccessor)
。例如:
import java.time.LocalDate;
import java.time.MonthDay;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2020, 6, 20);
MonthDay md = MonthDay.from(date);
System.out.println(md);
}
}
那将输出:
--6-20
MonthDay
→LocalDate
这里的问题是 MonthDay
显然只代表 月 和 月日 ,而 LocalDate
另外代表年。您需要决定如何确定应该使用哪一年。一旦你知道,那么两个选项是:
例如:
import java.time.LocalDate;
import java.time.MonthDay;
import java.time.Year;
public class Main {
public static void main(String[] args) {
MonthDay md = MonthDay.of(6, 20);
Year year = Year.of(2020);
LocalDate date1 = md.atYear(year.getValue());
LocalDate date2 = year.atMonthDay(md);
System.out.println(date1);
System.out.println(date2);
}
}
那将输出:
2020-06-20
2020-06-20
如何提取 LocalDate 中的月日?我需要在明天内解决这个问题,因此我们将不胜感激!
private final Set<MonthDay> recurringHolidays = new HashSet<>();
private final Set<LocalDate> holidays = new HashSet<>();
public void setHoliday(final LocalDate date) {
holidays.add( date );
}
public void setHolidayIfIsRecurring() {
for (LocalDate holidayLocalDate: getHolidays())
for (MonthDay monthDay: getRecurringHolidays()){
LocalDate monthdayToLocalDate = monthDay -------------????
if (!setOfHolidays().contains( monthdayToLocalDate ) ){
setHoliday( (monthDay) );
}
}
}
LocalDate
→MonthDay
您可以使用 MonthDay#from(TemporalAccessor)
。例如:
import java.time.LocalDate;
import java.time.MonthDay;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2020, 6, 20);
MonthDay md = MonthDay.from(date);
System.out.println(md);
}
}
那将输出:
--6-20
MonthDay
→LocalDate
这里的问题是 MonthDay
显然只代表 月 和 月日 ,而 LocalDate
另外代表年。您需要决定如何确定应该使用哪一年。一旦你知道,那么两个选项是:
例如:
import java.time.LocalDate;
import java.time.MonthDay;
import java.time.Year;
public class Main {
public static void main(String[] args) {
MonthDay md = MonthDay.of(6, 20);
Year year = Year.of(2020);
LocalDate date1 = md.atYear(year.getValue());
LocalDate date2 = year.atMonthDay(md);
System.out.println(date1);
System.out.println(date2);
}
}
那将输出:
2020-06-20
2020-06-20