2010-07-12 5 views
0

Je reçois cette FormatException après ma mise à niveau vers VS 2010. Rien de vraiment spécial. code:Strange FormatException après la mise à niveau dans 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; 
} 

Disons que vous obtenez maintenant si vous exécutez ce 31/6/2010. Je pense que c'est une date valide. J'ai testé la date qui est générée et c'est ok ... ce projet n'a jamais eu ce problème alors qu'il travaillait dans VS 2008.

Des idées?

+0

Je suis un peu confus - pourquoi le 31/6/2010 serait-il une date valide? –

Répondre

1

Votre FormatException est causée en transmettant 31/6/2010 comme argument à DateTime.Parse(). 31/6/2010 n'est pas une date valide - il y a seulement 30 jours en juin.

Si vous avez besoin du dernier jour d'un mois, il est préférable d'utiliser la méthode DateTime.DaysInMonth(). Il faut à la fois le mois et l'année pour pouvoir traiter les années bissextiles.

+0

Mon dieu, comment je ne pouvais pas voir cela ..... – AlwaysBeCoding

+0

@AlwaysBeCoding, puisque cette réponse répond à votre question, vous devez vous assurer de vérifier le contour d'un "tick" à côté de la réponse pour le marquer comme "accepté" . –

Questions connexes