我有一份一年中的假期列表。我需要下列东西。
-
我需要得到一年中所有的日期。然后我需要删除所有假期并获取剩余日期类似于:
获取日期(一年中的所有日期(
获取假期日期(我已经将它们存储在数据库中(
获取日期-假期日期
-
针对特定日期,我需要知道今天是什么日子(周一?周二?什么日子?(
问题:-
使用Joda Time库,请分享完成它的最简单方法。
第一个问题的答案:
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((。它允许访问本地化名称,如"MONDAY"(英语(或"Lundi"(法语(。
参见此代码示例:
LocalDate date = LocalDate.now();
String nameOfWeekday = date.dayOfWeek().getAsText(Locale.ENGLISH);
对于此类仅限日期的问题,类型LocalDate
是迄今为止使用的最简单、最直接的类型。只有当您有时间部分并且需要进行时区计算时,类型DateTime
才有意义。