Joda时间:如何从一年中的某个特定日期开始



我有一份一年中的假期列表。我需要下列东西。

  1. 我需要得到一年中所有的日期。然后我需要删除所有假期并获取剩余日期类似于:

    获取日期(一年中的所有日期(

    获取假期日期(我已经将它们存储在数据库中(

    获取日期-假期日期

  2. 针对特定日期,我需要知道今天是什么日子(周一?周二?什么日子?(

问题:-

使用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才有意义。

相关内容

  • 没有找到相关文章

最新更新