Utilisation de .NET 3.5
Je veux déterminer si l'heure actuelle se situe dans une plage de temps.
Jusqu'à présent, j'ai l'heure actuelle:
DateTime currentTime = new DateTime();
currentTime.TimeOfDay;
Je ne sais pas comment convertir et comparer l'intervalle de temps. Cela fonctionnerait-il?
if (Convert.ToDateTime("11:59") <= currentTime.TimeOfDay
&& Convert.ToDateTime("13:01") >= currentTime.TimeOfDay)
{
//match found
}
UPDATE1: Merci à tous pour vos suggestions. Je n'étais pas familier avec la fonction TimeSpan.
Réponses:
Pour vérifier une heure de la journée, utilisez:
Pour les temps absolus, utilisez:
la source
Quelques bonnes réponses ici, mais aucune ne couvre le cas de votre heure de début étant un jour différent de votre heure de fin. Si vous avez besoin de chevaucher la limite du jour, quelque chose comme ceci peut vous aider:
Notez que dans cet exemple, les limites de temps sont inclusives et que cela suppose toujours moins de 24 heures de différence entre
start
etstop
.la source
11:57 pm
et cela a fonctionné:TimeSpan time = new TimeSpan(23, 57, 00); DateTime date_with_time = mydate.Add(time);
DateTime
tombe dans les heures ouvrables spécifiées. Les heures d'ouverture peuvent être le même jour, mais elles peuvent également s'étendre sur deux jours (par exemple, de 15 h à 1 h du matin).si vous voulez vraiment analyser une chaîne dans un TimeSpan, vous pouvez utiliser:
la source
11:57 pm
et cela a fonctionné:TimeSpan time = new TimeSpan(23, 57, 00); DateTime date_with_time = mydate.Add(time);
Une petite fonction d'extension simple pour cela:
la source
start <= end
doit être modifiéstart < end
et une autre hypothèse pourrait être que c'est le même jour, mais si tel est le cas, il échouera probablement si vous utilisez Now.TimeOfDay car il inclut les millisecondes et provoque le dépassement de la plage.Essayez d'utiliser l'objet TimeRange en C # pour atteindre votre objectif.
Voici où j'ai eu cet exemple d'utilisation de TimeRange
la source
La
TimeOfDay
propriété renvoie uneTimeSpan
valeur.Essayez le code suivant:
En outre,
new DateTime()
est identique àDateTime.MinValue
et sera toujours égal à1/1/0001 12:00:00 AM
. (Les types de valeur ne peuvent pas avoir de valeurs par défaut non vides) Vous souhaitez utiliserDateTime.Now
.la source
Vous êtes très proche, le problème est que vous comparez un DateTime à un TimeOfDay. Ce que vous devez faire est d'ajouter la propriété .TimeOfDay à la fin de vos fonctions Convert.ToDateTime ().
la source
Cela sera-t-il plus simple pour gérer le cas de limite de jour? :)
la source
En utilisant Linq, nous pouvons simplifier cela par ceci
la source
la source