Je dois comparer deux valeurs DateTime pour déterminer l'égalité (exactement la même), à l'aide de la précision des minutes. Est-ce que c'était la meilleure façon de le faire? Mes dates pourraient avoir des secondes et des millisecondes, mais je tiens à considérer que jusqu'à la suite de minutes.
3 Réponses :
Que diriez-vous de
where (Math.Floor(datetime1.Ticks / 600000000) == Math.Floor(datetime2.Ticks / 600000000))
exactement ce que j'ai pensé quand j'ai vu la question
Si vous voulez dire DateTime1.millisecond code>, ce n'est pas raison - la valeur est toujours comprise entre 0 et 999.
vérifier si Essayez-vous de vérifier si elles ont la même minute, ou s'ils sont moins d'une minute de distance? Pour la première, utilisez: p> ayant déclaré: p> pour la seconde, utilisez: p> xxx pré> Vous devez considérer ce que vous voulez que le résultat soit dans le cas où l'on est local et que l'un est dans UTC, à la manière ... p> Notez qu'il n'y a rien LINQ-SPÉCIFIQUE ICI - En supposant que vous utilisez LINQ vers des objets. Si vous utilisez LINQ vers SQL, vous ne pouvez évidemment pas utiliser les méthodes locales et nous devrons regarder à nouveau ... P> Edit: Je suis toujours très peu clair sur votre question. Si vous avez besoin d'eux pour être exactement em> la même date / heure, il est facile (laissant de côté le problème possible du VS UTC local possible): P> math.abs (diff.totalinutes) == 0 code> ne le fera pas, non - c'est vérifier s'il est exactement em> le même.
where dateTime1 == dateTime2
Jon - J'étais méfiant d'utiliser RoundTominute (DateTime) alors que les dates entrantes pourraient éventuellement avoir des secondes sur eux et je voulais maintenir une minute de précision.L'ajoute math -.abs pourrait le jeter aussi bien je suppose? Je pouvais (devrait) dénoncer les secondes avant d'utiliser les dates bien sûr! Mais pour répondre à votre requête, oui, j'en ai besoin d'être exactement le même
@Preetha: Si vous avez besoin d'eux pour être exactement i> identique, alors de quelle manière avez-vous besoin de "la précision des minutes" selon le titre de la question?
Si vous avez des valeurs DateTime entrant, où vous ne pouvez pas être sûr de savoir si elles sont attachées ou non des secondes, mais tout ce que vous vous souciez de ce qu'il y a de savoir s'ils sont exactement les mêmes .. à la minute. Je suppose que la partie Stripseconds devrait être totalement séparée et préciser le comparateur réel des valeurs..so cela fonctionnerait dans ce cas.
Il n'y a pas de concept de DateTime "ayant des secondes attachées" ou non - ils Toujours i> ont un deuxième code>. Peut-être que cela a été réglé sur une valeur significative, et peut-être que ce n'est pas - vous ne pourrez pas le dire. Cela ressemble à ma réponse probablement est i> ce que vous voulez, mais vous devez être clair dans votre esprit exactement ce que vous voulez arriver en premier. Écrivez des tests unitaires démontrant le comportement que vous souhaitez, puis voir si mon code rend votre passe d'unité passe.
Merci Allen, ferez cela (déterminera toujours exactement comment le processus fonctionne!). Voici le code de code indiquant la réponse que j'avais montée au départ: P>
(math.abs (DateTime1.Subrer (DateTime2) .totalinutes) == 0) p>
arrière-plan: dans mes requêtes de Linq où la clause (d'une doublure), je dois vérifier si DateTime1 et DateTime2 sont exactement les mêmes. Les valeurs DateTime à l'étude sont des dates de timbre pour d'autres valeurs utilisées dans la requête. P>
Comme édité dans ma réponse, utilisez simplement DateTime1 == DateTime2. Veuillez mettre à jour votre question pour vous débarrasser de la "utilisation maximale d'une minute de précision" comme ce n'est pas la même chose que "exactement la même chose".
Je prendrais cet extrait et posterais-le comme une réponse à votre question, de cette façon, les gens peuvent commenter / voter vers le haut ou le bas séparément de votre question