Il y a beaucoup de problèmes ici. Tout d'abord, vous ne voulez jamais utiliser à plusieurs reprises DateTime.Now
comme vous le faites. A la place,
DateTime now = DateTime.Now;
puis d'utiliser now
. La raison pour laquelle vous faites cela est parce que DateTime.Now
pourrait passer à un nouveau jour, ou mois, ou année entre les appels.
Bien sûr, cela ne résout pas votre problème. Allons-y maintenant. Vous essayez clairement d'ajouter un mois à now
, alors pourquoi ne pas
DateTime dtmNextPayment = now.AddMonths(1);
Il est très important de noter que now.AddMonths(1)
ne mute pas now
; C'est pourquoi vous devez l'affecter à une nouvelle instance de DateTime
.
Ensuite, la version originale de votre poste avait
DateTime dtmNextPayment = Convert.ToDateTime(DateTime.Now.AddMonths(1).Month.ToString() + "/" + DateTime.Now.Day.ToString() + "/" + DateTime.Now.Year.ToString());
Lorsque DateTime.Now
est de 1 Décembre 2011, cela produira
new DateTime(2011, 1, 1);
dont je doute est ce que vous avez l'intention. Voyez-vous pourquoi?
Votre tentative de modifier ce résultat en
new DateTime(2012, 2, 1)
lorsque la date est le 1er Janvier 2011. Je doute que ce que vous avez l'intention que la plupart des entreprises ne facturent pas un mois et un an à l'avance. Arrêtez-vous et réfléchissez une seconde, s'il vous plaît.
En outre, vous obtiendrez une exécution, par exemple, si le jour est le 31 janvier 2011 car il n'y a pas de 31 février 2011 (ou le 31 février 2012) d'ailleurs. C'est pourquoi vous obtenez l'exception que vous obtenez maintenant. Lancez votre code demain (1er février 2011), et ce sera "bien". Enfin, ne faites pas ce que vous faites parce qu'il y a des problèmes de culture sérieux. Les formats de toutes les cultures ne correspondent pas à la façon dont vous essayez de les formater.
Moral: DateTime
a des méthodes intégrées qui ont déjà été testées et évitent tous ces problèmes. Utilise les. Chaque fois que vous essayez de faire de la logique sur presque n'importe quel objet en convertissant des parties de celui-ci en une chaîne et en convertissant en retour vous invoquez une mauvaise odeur de code.
C'était un très mauvais exemple. En fait, j'ai différents scénarios sur différentes conditions. Mon intention était de convertir en forme de mois/date/année. – Ram
Nous ne pouvons pas vous aider si vous ne nous aidez pas à vous aider. Donnez-nous un bon exemple à partir duquel travailler. – jason