Roundoff Zeitspanne bis 15 Minuten Intervall

8

Ich habe eine Eigenschaft in meinem Code, wo Benutzer eine Zeitspanne in HH eingeben können: mm wie

%Vor%

Ich möchte in meinem Eigentum zu den nächsten 15 Minuten abrunden, aber ich habe keine Datetime hier. Ich muss es nur mit Timespan

machen %Vor%

Ich habe alle diese Lösungen versucht, aber sie beinhalten Datetime in ihnen

Wie kann ich aufrunden? die Zeit bis zu den nächsten X Minuten?
Gibt es eine einfache Funktion zum Runden einer DateTime auf die nächsten 30 Minuten in C #?
DotNet Roundoff datetime bis 15 Minuten

    
s-a-n 03.06.2014, 02:33
quelle

4 Antworten

12

Ich denke, du willst so etwas:

%Vor%

Wenn Sie 15 als das für die Rundung gewählte Intervall eingeben, addiert die Funktion zunächst 7 Minuten und dann auf die nächsten 15 Minuten. Dies sollte Ihnen geben, was Sie wollen.

Da oben eine Erweiterungsmethode geschrieben wurde, können Sie es wie folgt verwenden:

%Vor%

Der erste wird 10:30, und der zweite wird 10:45 (wie gewünscht).

    
Baldrick 03.06.2014, 03:10
quelle
4

Ich mochte Baldricks Antwort, aber ich habe festgestellt, dass es nicht funktioniert, wenn negative TimeSpan-Werte verwendet werden (wie im Fall von Zeitzonen-Offsets).

Ich habe seinen ursprünglichen Code wie folgt geändert und dies scheint sowohl für positive als auch für negative TimeSpan-Werte zu funktionieren.

%Vor%     
Larry C 26.10.2015 17:50
quelle
2
Ich weiß, das ist ziemlich spät, aber ich dachte, es könnte für jemanden nützlich sein, der nach einer Antwort sucht, so wie ich es war, als ich diese Frage fand. Beachten Sie, dass dies zum Aufrunden auf Einheiten beliebiger Länge verwendet werden kann und leicht so modifiziert werden kann, dass es abgerundet oder auf den nächsten Block gerundet wird (durch Ändern von Math.Ceiling in Math.Floor oder Math.Round)

%Vor%

Es kann so verwendet werden:

TimeSpan roundedMinutes = RoundTimeSpanUp(span, TimeSpan.FromMinutes(15));

oder um durch irgendeine Zeiteinheit aufzurunden, so:

TimeSpan roundedHours = RoundTimeSpanUp(span, TimeSpan.FromHours(1));

    
Rosemarie M. 06.11.2016 16:30
quelle
0

Mir ist klar, dass es ziemlich spät ist, aber die Antwort von @Baldrick hat meine eigene Lösung inspiriert:

%Vor%     
SeanH 18.08.2016 21:36
quelle

Tags und Links