Я написал код для моей новой биллинговой системы.Цель состоит в том, чтобы выставлять счет клиенту в один и тот же день каждого месяца.(не 1-й или последний день месяца)
static bool NeedToBill(DateTime planLastBilled, DateTime cycleDate)
{
// is today the same date as the cycleDate AND is was the planLastBilled not the same day as today?
if (DateTime.UtcNow.Day.Equals(cycleDate.Day) && !DateTime.UtcNow.Day.Equals(planLastBilled))
return true;
else
return false;
}
2 ловушки:
- Если его cycleDate.Day равен 31, а текущий месяц имеет только 29 дней
- cycleDate - 29 февраля 2012 г. - ему будут выставляться счета только в високосные годы
Есть ли здесь распространенная лучшая практика?
, поэтому кажется, что есть кучачто нужно проверить
- этот счет уже выставлен в этом месяце?
- существует ли день цикла в текущем месяце
- - это день цикла больше или равен текущей дате (это идеально, если транзакция провалилась днем ранее)
Спасибо!