2 つの値の間の時間を計算し、特定の日付を除外しようとしていLocalDateTime
ます (この例では、祝日です)。
var bankHolidays = new[] { new LocalDate(2013, 12, 25), new LocalDate(2013, 12, 26) };
var localDateTime1 = new LocalDateTime(2013, 11, 18, 10, 30);
var localDateTime2 = new LocalDateTime(2013, 12, 29, 10, 15);
var differenceBetween = Period.Between(localDateTime1, localDateTime2, PeriodUnits.Days | PeriodUnits.HourMinuteSecond);
ご想像differenceBetween
のとおり、値は 2 つの日付間の日数/時間/分/秒を示しています。
開始日から毎日チェックして、bankHolidays
コレクションにその日付が含まれているかどうかを確認できます。
var bankHolidays = new[] { new LocalDate(2013, 12, 25), new LocalDate(2013, 12, 26) };
var localDateTime1 = new LocalDateTime(2013, 11, 18, 10, 30);
var localDateTime2 = new LocalDateTime(2013, 12, 29, 10, 15);
var differenceBetween = Period.Between(localDateTime1, localDateTime2, PeriodUnits.Days | PeriodUnits.HourMinuteSecond);
var london = DateTimeZoneProviders.Tzdb["Europe/London"];
for (var i = 1; i < differenceBetween.Days; ++i)
{
var x = localDateTime1.InZoneStrictly(london) + Duration.FromStandardDays(i);
if (bankHolidays.Any(date => date == x.Date))
{
//subtract one day for the period.
}
}
いくつかの明白なことが欠けているように感じます。より簡単な方法があるはずです。特定の日付を除外しながら、2 つの日付の間の期間を見つける簡単な方法はありますか?
週末もこの除外に含める必要があります。明らかな方法は、週末の曜日を確認しながら銀行の休日を確認することですが、これはそれを処理する最善/正しい方法ではないようです。