Gibt es eine einfache Funktion zum Runden einer DateTime auf die nächsten 30 Minuten in C #?

8

Zum Beispiel:

2011-08-11 16:59 wird 2011-08-11 16:30

    
Dinesh 11.04.2012, 05:03
quelle

7 Antworten

16

Ich würde so etwas sagen

%Vor%

Und du könntest sogar deine eigene Erweiterung machen

%Vor%

BEARBEITEN

Diese Funktion schneidet bei Bedarf auch die Sekunden / Millisekunden ab. Danke für den Hinweis.

%Vor%     
BitKFu 11.04.2012, 05:08
quelle
17
%Vor%

Beispiel:

%Vor%     
dtb 11.04.2012 05:23
quelle
3

Eine allgemeinere Lösung, die auf die nächste Zeitspanne aufrundet:

%Vor%

Es würde auf diese Weise verwendet werden:

%Vor%

Mehr in diese Antwort .

    
redent84 18.11.2013 15:07
quelle
2
%Vor%     
Servy 11.04.2012 05:09
quelle
0

Es ist keine solche Funktion verfügbar

Sie können sich beziehen auf: Wie kann ich die Zeit bis zu den nächsten X Minuten?

Wenn nötig, können Sie selbst eine erstellen

%Vor%

zB:

%Vor%     
Thakur 11.04.2012 05:10
quelle
0

Ausnutzen einiger Mathe

%Vor%

Beachten Sie, dass TimeOfDay ein TimeSpan und seine TotalMinutes -Eigenschaft ein double ist und dass der Modulo-Operator bei doubles folgendermaßen funktioniert:

  

47,51% 30d == 17,51

     

16,2% 30d == 16,2

     

768,7% 30d == 18,7

Sie könnten die 30d auf einen anderen Wert als Null setzen. Wechseln Sie zum Beispiel zu 15 Runden in 15-Minuten-Intervallen. Der Wechsel von 30d auf -30d hat die Ergebnisse der Tests, die ich ausgeführt habe, nicht verändert.

Sie könnten eine Rundungserweiterungsmethode erstellen (mit dieser Rundungsmethode für alle DateTime-Werte):

%Vor%     
devgeezer 11.04.2012 06:04
quelle
0

So habe ich es gehandhabt. Unten ist die Basismethode und eine Überladung, um auf die nächsten 30 Minuten zu runden:

%Vor%     
Brad Moeller 01.02.2017 20:50
quelle

Tags und Links