我需要能够创建自定义日历,这些日历可以省略我从日期设置中指定的某些假期。例如,我可能需要创建一个键入日期的地图,但只想循环忽略某些假期的日期。一个例子是我想知道在某一天使用的德国政府建筑物中有多少电力,但省略了假期。我考虑过使用joda-time
,考虑到我可能有一个像<DateTime, Double>
这样的地图,但我不确定这是否会奏效。
这样做最好的方法是什么?
答案 0 :(得分:2)
您在“商务日历”意义上使用“日历”这个词,而不是java.util.Calendar
或Joda Chronology
理解的意义上的。基本上,您的“日历”是规则的应用,从Joda Intervals
中选择一组Joda Chronology
。
我相信你会发现,而不是试图在Joda之上构建另一个商业日历系统,你最好不要使用ObjectLabKit,这是一个支持商业日历的商业图书馆,包括假日规则等。
希望规则支持区域设置中的所有方案。有时,不同的位置对实际使用半通用库的时间没有足够的相同假设。
答案 1 :(得分:0)
手动检查是假日
private static final List<LocalDate> HOLIDAYS = Arrays.asList(new LocalDate[]{
new LocalDate(2000, DateTimeConstants.JANUARY, 1),
new LocalDate(2000, DateTimeConstants.JANUARY, 7),
new LocalDate(2000, DateTimeConstants.JANUARY, 14),
new LocalDate(2000, DateTimeConstants.JANUARY, 28),
/* ... */
new LocalDate(2000, DateTimeConstants.DECEMBER, 25),
});
public static boolean isHoliday(LocalDate checkedDate)
{
for (final LocalDate date : HOLIDAYS)
{
if(date.getMonthOfYear() == checkedDate.getMonthOfYear()
&& date.getDayOfMonth() == checkedDate.getDayOfMonth())
{
return true;
}
}
return false;
}
答案 2 :(得分:0)
我不知道你为什么想要一张地图?有什么价值?
如果您正在寻找一些查询以了解某一天是否是假日,那么使用Set可能更有意义。 (我以前没有使用过Joda的约会时间,只是在这里写一些合理的东西)
e.g。
Set<DateTime> holidays = new HashSet<DateTime>();
holidays.add(....);
// add all holidays to the set
// if you need to check if certain day is holiday so you can skip it:
if (!holidays.contains(someDay)) {
// it is not a holiday
// do anything you need
}