Question

Je construis une nouvelle application Web ASP.NET basée sur une application héritée (ASP classique). Les personnes qui ont construit ce code il y a 4 ou 5 ans utilisaient beaucoup de fonctions VBScript comme DateDiff.

Je travaille actuellement sur un simulateur qui effectue beaucoup de calculs avec les dates. Et j’obtiens une différence agaçante entre ces dates parce que je n’arrive pas facilement à faire la différence entre les mois en c # comme dans VB 6.

Alors, j'ai choisi le chemin d'accès à l'aide de l'espace de noms DateAndTime.DateDiff de Microsoft.VisualBasic sur mon application Web ASP.NET.

Vous savez s'il y a des implications à ce sujet? Je suis un peu préoccupé par cette approche.

A bientôt,

Était-ce utile?

La solution

La seule implication est que vous ajoutez un autre assemblage à votre déploiement et que vous utilisez des fonctionnalités inconnues de nombreux développeurs C # (d'autres personnes susceptibles de devoir gérer votre code). Mais personnellement, je ne pense pas qu'il y ait beaucoup de mal à cela. La documentation de MSDN Library est généralement bonne et vous pouvez également ajouter quelques commentaires si vous souhaitez expliquer pourquoi vous l’utilisez.

Éditer: Je tiens également à noter que Microsoft.VisualBasic a été implémenté à partir de zéro pour .NET. Il ne contient pas de code ancien.

Autres conseils

Une possibilité consiste à utiliser TimeSpan comme indiqué, tout en divisant par 30,4375 (nombre moyen de jours par mois), en ignorant les fractions de mois. Ceci est assez proche des choses sur lesquelles je travaille actuellement, mais peut ne pas être assez précis en fonction de vos besoins. Par exemple, la différence entre le 1 er février et le 1 er mars serait 0, ce qui (selon une définition de 30,4375 jours / mois) est correcte; cela peut ne pas être correct pour vos besoins particuliers, cependant.

C’est une bonne chose que cela vous préoccupe, car vous ne devriez utiliser aucun des éléments classés dans l’espace de noms VisualBasic.

La bibliothèque .net offre une bien meilleure solution appelée TimeSpan. Utilisez-la de la manière suivante: (dt1 et dt2 sont des DateTime s)

 TimeSpan ts = dt2 - dt1; //Or ts = dt1.Subtract(dt2)

Pour ce qui est de l'aide, je pense vraiment qu'un coup d'œil rapide sur l'intellisence vous dira le reste (écrivez-le simplement dans Visual Studio et ajoutez ts. )

MODIFIER pour le comptage mensuel réel: (y2 - y1) * 12 + m2 - m1 , quel est le problème?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top