我有一年的假期清单。我需要以下几点。
我需要获得一年中的所有日期。然后我需要删除所有 假期并获得剩余的日期。类似的东西:
获取日期(一年中的所有日期)
获取假期日期(我已将它们存储在数据库中)
获取日期 - 假日日期
在特定日期,我需要知道它是哪一天(星期一?星期二?星期几?)
问题: -
使用Joda-Time库,请分享最简单的方法。
答案 0 :(得分:5)
回答第一个问题:
public static List<LocalDate> getDaysOfYear(int year, List<LocalDate> holidays) {
LocalDate date = new LocalDate(year, 1, 1);
LocalDate end = new LocalDate(year + 1, 1, 1);
List<LocalDate> list = new ArrayList<LocalDate>();
while (date.isBefore(end)) {
if (!holidays.contains(date)) {
list.add(date);
}
date = date.plusDays(1);
}
return Collections.unmodifiableList(list);
}
回答第二个问题:
LocalDate date = LocalDate.now();
int dow = date.getDayOfWeek();
// dow has the values 1=Monday, 2=Tuesday, ..., 7=Sunday
问题2的更新:
使用数字(或命名常量,如DateTimeConstants.MONDAY,最后也只是数字)的替代方法是使用属性dayOfWeek().getAsText()。它允许访问本地化的名称,例如&#34; Monday&#34; (英文)或&#34; Lundi&#34; (法国)。
请参阅此代码示例:
LocalDate date = LocalDate.now();
String nameOfWeekday = date.dayOfWeek().getAsText(Locale.ENGLISH);
对于此类仅限日期的问题,类型LocalDate
是迄今为止最简单直接使用的类型。如果您有时间部分并且需要时区计算,则DateTime
类型才有意义。