2010-12-15 5 views
4

У меня есть запрос, который вызывает Oracle DB с C#. Я хочу написать запрос, чтобы получить данные, максимум 5 лет.Дата Диапазон в днях .... C#

Я в настоящее время трудно закодированное значение для public const int FIVE_YEARS_IN_DAYS = 1825;

Но это не правильно из-за високосных лет. Есть ли функция, которая даст мне правильное количество дней в течение предшествующих 5 лет?

+0

Почему бы не использовать 365,25 дней в году? – PostMan 2010-12-15 19:59:26

+1

@PostMan - это не всегда точно. У нас нет високосных лет каждые 4 года. Работа со временем - это одна из областей программирования, где гораздо лучше использовать закаленное, проверенное решение. Легко укусить. – 2010-12-15 20:05:23

+0

@Все .... спасибо за ввод. Очень полезно – MikeTWebb 2010-12-15 20:47:15

ответ

6

Я думаю, что вы хотите:

DateTime now = DateTime.Now;  
now.AddYears(-5).Subtract(now).Days 
4
DateTime now = DateTime.Now; 
TimeSpan fiveYears = now.Subtract(now.AddYears(-5)); 
int numberOfDaysInLastFiveYears = fiveYears.Days; 

Это правильно учитывает високосные годы. Выполнение этого права теперь дает 1826 дней.

Смежные вопросы