Je cherche à compter le nombre de dates Ce n'est pas par exemple: p> Je peux obtenir cette fonctionnalité avec le code ci-dessous: p> y a-t-il une meilleure façon? p> p> DateTimes code>.
.totaldays code>. Comme des périodes inférieures à 24 heures peuvent toujours renvoyer "2" en se chevauchant deux jours différents. De même, deux dates à quelques minutes d'interruption devraient toujours renvoyer "1". P>
4 Réponses :
Pourquoi pas seulement: à l'aide de Utilisation de .Date code> normalise la date à minuit (0:00), ajoutez 1 au
jours code > Pour obtenir le nombre de dates différentes, pas seulement le nombre de jours entre les deux entre les deux. p>
Durée Code> veille à avoir toujours une réponse positive. P> P> P> P> P> P> P >
Ça va le faire. Acceptera quand je peux. Je n'ai pas remarqué que c'était toujours éteint par 1 pour tous les tests si bon endroit.
Vous pouvez utiliser un moins plutôt que .Subrent code> pour le simplifier un peu (selon la réponse de @tim Schmelter)
@MattMitchell Oui, c'est une question de préférence, j'aime utiliser soustraire quand je enchaînement comme ça.
Incidemment, votre Durée () Code> devrait être une méthode appelée pas une propriété. Il gère en fait des dates mal signalées que mon échantillon original ne le fait pas.
DateTime d1=DateTime.MinValue; DateTime d2=DateTime.MaxValue; TimeSpan span=d2-d1; int counter = span.Days + 1;
signifie que vous voulez aussi calculer des mois aussi
Peut-être simplement démo fort> p> p>
Oui cela le fait, +1. Davio vous a battu au poinçon malheureusement pour accepté.
@MattMitchell: Mais j'utiliserais Timespan.days code> de toute façon au lieu de
total des jours code> car vous ne voulez pas compter les fractions de jours (
double code>) mais juste le composant jours (
int code>).
@MattMitchell: Je vois que Davio l'a également changé afin que mon argument soit inutile de toute façon;)
Ouais. Si c'était un point de rupture, j'aurais changé la réponse acceptée, mais cela n'a pas d'importance de fonctionnement. Merci pour l'aide.
math.ceiling ((d2 - d1.date) .totaldays) p>
essayé tous les cas que vous avez mentionnés. Et les résultats sont attendus! J'espère que cela aide. P>
Bon effort, mais il ne traitera pas de 2000/1/1 23:00 à 2000/1/2 00:00 (il revient 1 et devrait être 2 comme il y a 2 dates là). Voir la réponse acceptée de Davio pour une solution de travail.
@MattMitchell, cela démontre que "prenant plafond code>" n'est pas la même chose que "prise
étage code> et ajout
1 code>". Ce dernier donnerait un comportement correct.
Qu'en est-il de d1.date.Subrer (d2.date) .Taldays + 1
Je ne sais pas comment c'est un duplicata. Deux dates le même jour devraient toujours revenir 1. Une période de moins de 24 heures de passage à deux jours devrait retourner deux jours.
Nodatime est idéal pour ce genre de chose, reportez-vous à: [Comment utiliser Nodatime pour calculer une période de jours inclus] [1] [1]: Stackoverflow.com/questions/10336863/...
Ce n'est pas un duplicata comme en témoigne le fait qu'il a une réponse différente de la duplication nominée ...