Verwenden von .NET 3.5
Ich möchte feststellen, ob die aktuelle Zeit in einen Zeitbereich fällt.
Bisher habe ich die aktuelle Zeit:
DateTime currentTime = new DateTime();
currentTime.TimeOfDay;
Ich werde ausblenden, wie der Zeitbereich konvertiert und verglichen werden kann. Würde das funktionieren?
if (Convert.ToDateTime("11:59") <= currentTime.TimeOfDay
&& Convert.ToDateTime("13:01") >= currentTime.TimeOfDay)
{
//match found
}
UPDATE1: Vielen Dank an alle für Ihre Vorschläge. Ich war mit der TimeSpan-Funktion nicht vertraut.
Antworten:
Zur Überprüfung der Tageszeit verwenden:
Für absolute Zeiten verwenden Sie:
quelle
Einige gute Antworten hier, aber keine decken den Fall ab, dass Ihre Startzeit an einem anderen Tag als Ihrer Endzeit liegt. Wenn Sie die Tagesgrenze überschreiten müssen, kann so etwas helfen:
Beachten Sie, dass in diesem Beispiel die Zeitgrenzen inklusive sind und dass dies immer noch einen Unterschied von weniger als 24 Stunden zwischen
start
und voraussetztstop
.quelle
11:57 pm
und das hat funktioniert:TimeSpan time = new TimeSpan(23, 57, 00); DateTime date_with_time = mydate.Add(time);
DateTime
bestimmten Geschäfts innerhalb der angegebenen Geschäftszeiten liegt. Die Geschäftszeiten können am selben Tag liegen, sie können jedoch auch zwei Tage umfassen (z. B. 15 bis 1 Uhr Betriebsstunden).Wenn Sie wirklich einen String in einen TimeSpan analysieren möchten, können Sie Folgendes verwenden:
quelle
11:57 pm
und das hat funktioniert:TimeSpan time = new TimeSpan(23, 57, 00); DateTime date_with_time = mydate.Add(time);
Eine einfache kleine Erweiterungsfunktion dafür:
quelle
start <= end
geändert werden sollten,start < end
und eine andere Annahme sein könnte, dass es am selben Tag ist, aber wenn dies der Fall ist, wird es wahrscheinlich fehlschlagen, wenn Sie verwenden Now.TimeOfDay, da es Millisekunden enthält und dazu führt, dass es außerhalb des Bereichs liegt.Versuchen Sie, das TimeRange-Objekt in C # zu verwenden, um Ihr Ziel zu erreichen.
Hier habe ich das Beispiel für die Verwendung von TimeRange
quelle
Die
TimeOfDay
Eigenschaft gibt einenTimeSpan
Wert zurück.Versuchen Sie den folgenden Code:
Auch
new DateTime()
ist das gleiche wieDateTime.MinValue
und wird immer gleich sein1/1/0001 12:00:00 AM
. (Werttypen dürfen keine nicht leeren Standardwerte haben.) Sie möchten verwendenDateTime.Now
.quelle
Sie sind sehr nah dran, das Problem ist, dass Sie eine DateTime mit einer TimeOfDay vergleichen. Sie müssen lediglich die Eigenschaft .TimeOfDay am Ende Ihrer Convert.ToDateTime () -Funktionen hinzufügen.
quelle
Wird dies für die Behandlung des Tagesgrenzfalls einfacher sein? :) :)
quelle
Mit Linq können wir dies dadurch vereinfachen
quelle
quelle