Comment puis-je vérifier si l'heure actuelle est entre dans un laps de temps?
J'ai un service que l'utilisateur peut configurer à exécuter pendant les "heures creuses", heures. Ils ont la possibilité de définir le laps de temps que le service peut s'exécuter.
Par Exemple:
Utilisateur d'Un 8am-5pm, de sorte qu'ils veulent à l'annexe de l'application à exécuter entre 5 h 30 et 7 h 30.
Utilisateur B travaille 9 heures-6 heures du matin, de sorte qu'ils l'annexe de l'application à exécuter entre 6:30 et 8:30 pm.
Le point est que l'application utilise leur ordinateur lorsqu'ils ne le sont pas.
Donné un DateTime de l'heure actuelle, un DateTime de début et une DateTime de l'heure d'arrêt, comment puis-je vérifier si le courant est entre le démarrage et l'arrêt.
La partie la plus délicate pour moi, c'est que le temps peut traverser la nuit à la frontière.
Vous devez vous connecter pour publier un commentaire.
Si
startTime
etendTime
représenter un seul intervalle de temps (cela ne se produira une fois, etstartTime
etendTime
représentent la date et le temps de démarrage/arrêt), puis c'est aussi simple que de direSi c'est un événement récurrent (qui arrive tous les jours, pendant un certain intervalle de temps), vous pouvez faire des comparaisons à l'aide de la
TimeOfDay
de la propriété. (La récurrence des cas est celui où vous devez tenir compte d'une start/stop qui traverse minuit)(Note: Ce code suppose que si
start == end
, alors il couvre tous les temps. Vous avez fait un commentaire à cet effet sur un autre post)Par exemple, pour vérifier si il est entre 5 h et 9 H 30,
Si
startTime
etendTime
sontDateTime
s, on pourrait direJe suppose qu'à partir de la question que vous voulez savoir si l'heure de début et heure de fin de journée (pas y compris la date réelle, c'est à dire, 1/1/1900 ou quelque chose comme ça) pour voir si un autre temps est avec le temps spécifié par de début et de fin. E. g., si le départ est à 9 heures du soir et la fin est 9h, accepter 10pm mais rejeter 10h.
Vous pouvez le faire soit par intervalle de temps types (les temps sont égaux, la fin est après de début, de fin, c'est avant de commencer), qui est simple:
Ou vous pouvez étendre la gamme de début et de fin, tels que la fin est toujours après le début en tant que tel:
Je suis en supposant que vous enregistrez le début et la fin des temps dans les applications fichier de configuration, de sorte que tous vous avez à faire est d'avoir votre demande de définir un indicateur sur "on" lorsque le "start time" se produit et réglez-le sur "off" lorsque l'heure d'arrêt se produit.
De cette façon, vous n'avez pas à être constamment vérifier si le "maintenant" est "entre le début et la fin des" temps.
si (courant >= start && current <= arrêt)
(ou sans = )
Je pense que c'est tout ce dont vous avez besoin?
la nuit à la frontière est un hareng rouge - tout ce que vous devez savoir, c'est le statut à la fois des comparaisons.
Si vous faites des choses comme la poignée de week-end différemment, alors vous avez une autre logique, mais la comparaison est simple.