1

日付セットから指定した特定の休日を省略できるカスタム カレンダーを作成できる必要があります。たとえば、日付をキーにしたマップを作成する必要があるかもしれませんが、特定の休日を省略した日付だけをループしたい場合があります。例として、特定の日に使用された kWH のドイツ政府の建物の電力量を確認したいが、休日は省略します。joda-timeのようにキーが設定されたマップがあるかもしれないと考えて、これを使用することを考えまし<DateTime, Double>たが、それが機能するかどうかはわかりません。

これを行うための最良の方法は何ですか?

4

3 に答える 3

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;
}
于 2012-09-25T21:35:11.960 に答える
0

@EdwinBuckが言ったように、あなたの用語は混乱を招き、人々があなたの問題を理解するのを難しくしています.

なぜ Map が必要なのかわかりません。価値は何ですか?

特定の日が休日かどうかを調べるためのルックアップを探している場合は、Set を使用する方がおそらくより意味があります。(私は以前に Joda の日時を使用したことがありません。ここに賢明なことを書いているだけです)

例えば

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
}
于 2012-09-26T01:31:33.950 に答える