Лучший образец для ежемесячного выставления счетов cycle

Я написал код для моей новой биллинговой системы. Цель состоит в том, чтобы выставлять счет клиенту в один и тот же день каждый месяц. (не 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;
    } 

Две ловушки:

  1. Если его cycleDate. День 31, а в текущем месяце всего 29 дней
  2. cycleDate 29 февраля 2012 г. - ему будут выставлены счета только за високосные годы

Есть ли здесь общепринятая передовая практика?

так что кажется, что есть куча вещи, которые нужно проверить

  1. , выставлялся ли счет уже в этом месяце?
  2. день цикла существует в текущем месяце
  3. день цикла больше или равен текущей дате (это идеально, если the transaction failed the day before)

Thanks!

6
задан aron 22 March 2011 в 16:45
поделиться