1
votes

c # détecter quand le jour change

Dans mon application, j'ai un ticker qui s'exécute toutes les 5 secondes. J'ai aussi une horloge interne et je veux détecter quand le jour change. Pour tester, j'ai essayé le code suivant sans succès:

DateTime C = new DateTime(2019, 6, 20, 12, 58, 29);
DateTime D = new DateTime(2019, 6, 20, 12, 59, 29);

Si je vérifie si TotalDays> 0 je détecte avec succès le changement de jour mais dans le cas suivant (avec une différence d'une minute)

DateTime A = new DateTime(2019, 6, 20, 23, 58, 29);       
DateTime B = new DateTime(2019, 6, 21, 00, 01, 12);
Int32 dd = (B-A).Days;          // it returns 0
double dd = (B-A).TotalDays;    // it return 0.00002136213 

la comparaison échoue. Puisque j'ai besoin d'appeler une méthode lorsque le jour change, avec l'exemple ci-dessus, il est appelé à chaque fois et je ne veux pas de ce behevior. Un indice?


4 commentaires

Que voulez-vous dire, voulez-vous savoir quand 24 heures se sont écoulées ou simplement quand l'application est en cours d'exécution depuis un jour, puis changer la valeur?


Le résultat est correct. Vous voudrez peut-être régler l'heure des deux dates sur 00:00:00, puis soustraire. Essayez (B.Date - A.Date).


Votre réponse est ici ( stackoverflow.com/ questions / 8480063 /… )


@AnilGoel Je pense que la vôtre est la meilleure solution, merci


3 Réponses :


1
votes

Ne regardez que les parties Date

DateTime A = new DateTime(2019, 6, 20, 23, 58, 29);       
DateTime B = new DateTime(2019, 6, 21, 00, 01, 12);
Int32 dd = (B.Date-A.Date).Days;  


0 commentaires

3
votes

comparer directement une partie Date de DateTime

bool isSameDay = (A.Date == B.Date);


0 commentaires

1
votes

Pour votre ticker, pourquoi ne pas utiliser les variables TimeSpan pour compléter votre comparaison. Vous définissez 1 variable de période statique sur 24 heures (1 jour), puis créez une variable secondaire pour stocker les valeurs. Vous définissez ensuite votre deuxième variable de durée égale à la soustraction de vos deux jours et cela vous permettra de savoir si un jour s'est écoulé.

`

TimeSpan newDayReference = new TimeSpan(24,0,0);
TimeSpan comparison;

//These two variables set to show difference.
DateTime A= DateTime.Now.AddDays(-1);
DateTime B = DateTime.Now;
comparison = B - A;

if(comparison > newDayReference){ //success }

` p>


0 commentaires