Странное FormatException после обновления в VS 2010 - PullRequest
0 голосов
/ 12 июля 2010

Я получаю это исключение FormatException после обновления до VS 2010. Ничего особенного. Код:

private void ManageDateEditControls()
{
    apoDateEdit.DateTime = DateTime.Parse(string.Format("01/{0}/{1}", DateTime.Now.Month-1, DateTime.Now.Year));
    eosDateEdit.DateTime = DateTime.Parse(string.Format("{0}/{1}/{2}", GetLastDayOfMonth(DateTime.Now.Month + 1),
        DateTime.Now.Month - 1, DateTime.Now.Year)); <-- FormatException occurs in this line.
}

private static int GetLastDayOfMonth(int month)
{
    // set return value to the last day of the month
    // for any date passed in to the method

    // create a datetime variable set to the passed in date
    DateTime dtTo = new DateTime(DateTime.Now.Year, month, 1);

    // overshoot the date by a month
    dtTo = dtTo.AddMonths(1);

    // remove all of the days in the next month
    // to get bumped down to the last day of the
    // previous month
    dtTo = dtTo.AddDays(-(dtTo.Day));

    // return the last day of the month
    return dtTo.Day;
}

Допустим, вы получите сейчас, если вы запустите это 31.06.2010. Я думаю, что это правильная дата. Я проверил сгенерированную дату, и это нормально ... этот проект никогда не сталкивался с этой проблемой, когда работал в VS 2008.

Есть идеи?

1 Ответ

1 голос
/ 12 июля 2010

Ваш FormatException вызван передачей 31/6/2010 в качестве аргумента DateTime.Parse().31/6/2010 является недействительной датой - в июне только 30 дней.

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

...