2011-09-23 10 views
3

Я унаследовал программу архива, написанную на C#. Предыдущий разработчик интересовался только архивированием данных за предыдущий месяц. Тем не менее, некоторые месяцы были упущены, и моя задача состояла в том, чтобы добавить функциональность, чтобы увидеть, какие другие месяцы были упущены.Определить текущий год или предыдущий год на основе выбора месяца

Часть, на которую я застрял: При определении пропущенного месяца мне нужно определить, является ли месяц частью текущего года или является ли он годом ранее.

Текущий месяц - это ключ. Если текущий месяц - сентябрь, то месяцы с января по сентябрь считаются текущим годом.

Если текущий месяц - сентябрь, то от октября до декабря считаются предыдущим годом. Конечно, это будет скользящий диапазон по мере продвижения каждого месяца.

Ищете руководство.

+2

Вы, кажется, ответили на свой вопрос. –

+0

если у меня есть трудное время, кодируя его – HaySeed

ответ

1

Использование DateTime.Now.Month это дает фактический месяц и вы можете сравнить, что другие даты вы, как вы описали, если он меньше или равен, то это текущий год, если он больше, чем в прошлом году.

И тогда вы можете установить дату архива на предыдущий год архив с DateTime.Now.AddYears (-1)

+0

, который сделает это – HaySeed

6

Если я что-то отсутствует, просто необходимо сравнить недостающую дату месяц против DateTime.Today.Month

DateTime archiveDate; 
if(someMonth > DateTime.Today.Month) 
    archiveDate = new DateTime(DateTime.Today.Year - 1, someMonth, 1); 
else 
    archiveDate = new DateTime(DateTime.Today.Year, someMonth, 1); 
+0

Я передумал - спасибо за код exampple – HaySeed

0

Вы можете получить текущий номер месяца (через DateTime.Month) и вычесть его из сравнения месяца и проверьте, больше ли оно нуля.

Пример:

int month1 = 5; //may 
int month2 = 4; //apr 
bool isCurrentYear = (month1 - month2 >= 0); //current year 

int month1 = 8; //aug 
int month2 = 11; //nov 
bool isCurrentYear = (month1 - month2 >= 0); //last year 
Смежные вопросы