Немного альтернативный подход к одной заданной Niyoko:
- Преобразовать оба
Instant
значения в LocalDate
- Внедрение диапазона betw ееп их
Я предполагаю, что интервал является исключительным - так что если конечная точка представляет точно полночь в целевой временной зоне, вы исключаете тот день, в противном случае вы включите его.
Таким образом, метод, приведенный ниже, включает в себя каждую дату, которая покрыта интервалом в данном часовом поясе.
public IEnumerable<LocalDate> DatesInInterval(Interval interval, DateTimeZone zone)
{
LocalDate start = interval.Start.InZone(zone).Date;
ZonedDateTime endZonedDateTime = interval.End.InZone(zone);
LocalDate end = endLocalDateTime.Date;
if (endLocalDateTime.TimeOfDay == LocalTime.Midnight)
{
end = end.PlusDays(-1);
}
for (LocalDate date = start; date <= end; date = date.PlusDays(1))
{
yield return date;
}
}
Спасибо. Я попробую с вашим решением. Кроме того, я получаю сообщение об ошибке «Невозможно неявно преобразовать тип« NodaTime.ZonedDateTime »в« NodaTime.LocalDateTime ». Преобразование 'LocalDateTime' в' ZonedDateTime' разрешило ошибку. Правильно ли я это делаю? – Karthik
@ Karthik: Yup - исправил образец сейчас, спасибо. –
Спасибо @ Jon Skeet. – Karthik