Определить текущий или предыдущий год на основе выбора месяца - PullRequest
3 голосов
/ 24 сентября 2011

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

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

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

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

Нужны некоторые рекомендации.

Ответы [ 3 ]

6 голосов
/ 24 сентября 2011

Если я что-то упустил, вам просто нужно сравнить дату пропущенного месяца с 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);
1 голос
/ 24 сентября 2011

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

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

0 голосов
/ 24 сентября 2011

Вы можете получить номер текущего месяца (через 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...