Was ist die einfachste Methode, um den Millisekunden-Teil eines DateTime.UctNow.TimeOfDay zu entfernen?

7

Ich habe eine Theorie, warum der folgende Code nicht die Ergebnisse liefert, die ich brauche:

%Vor%

Der Prozessor muss DateTime.UtcNow.TimeOfDay.Milliseconds berechnen, und aufgrund der Zeitlänge eines einzelnen Ticks der CPU (und der Zeit, um diese Eigenschaft zu verarbeiten und ein Ergebnis zurückzugeben), bedeutet dies nicht, dass DateTime.UtcNow.TimeOfDay.Milliseconds den Wert subtrahiert Genaue Anzahl von Millisekunden, die von DateTime.UtcNow.TimeOfDay

angegeben wird

Ich muss wissen, was ist die einfachste und effektivste Methode, um die Anzahl der Millisekunden von DateTime.UtcNow.TimeOfDay zu entfernen, ohne eine große Menge an Prozessorzeit zu benötigen? Diese Anwendung von mir ist ziemlich groß, und dieses Problem ist ziemlich einfach. Wenn diese Anwendung bereitgestellt wird, ist jedoch kein Platz für instabile Anwendungen vorhanden. Diese Millisekunden müssen gekürzt werden, da sie an eine gespeicherte Prozedur in SQL Server gesendet werden und diese bestimmte gespeicherte Prozedur Millisekunden bei DateTimes nicht unterstützt. Ich komme auch häufig auf dieses Problem, aber normalerweise konvertiere ich das Datum in eine Zeichenkette (die eine eigene Darstellung ist), spalte die Zeichenkette bei Millisekunden ganz auf und nutze die Indexposition 0, um die benötigte Zeit zu erhalten. Gibt es einen kürzeren, effektiveren Weg?

Stabilität und Geschwindigkeit sind mir am wichtigsten.

Vielen Dank im Voraus

    
Eon 19.03.2012, 10:03
quelle

5 Antworten

8

Alles, was Sie über die Anpassung des DateTime ToString-Formats wissen müssen, finden Sie hier auf MSDN.

/ p>

In einfachen Worten, etwa so:

%Vor%

(Ändern Sie das Format wie gewünscht)

    
user111013 19.03.2012, 10:08
quelle
7

Verwenden Sie nicht wiederholt die Eigenschaft Now / UtcNow im selben Ausdruck. Holen Sie den Wert einmal und verwenden Sie denselben Wert an den verschiedenen Stellen:

%Vor%

Wenn Sie das Datum nur auf eine spezielle Weise formatieren möchten und den tatsächlichen DateTime-Wert nicht benötigen, können Sie einfach die Millisekunden im Format überspringen, zum Beispiel:

%Vor%

Wenn Sie den Wert an die Datenbank senden, sollten Sie ihn nicht als Zeichenfolge, sondern als DateTime-Wert senden:

%Vor%     
Guffa 19.03.2012 10:08
quelle
4

Grundsätzlich erstellen Sie eine neue DateTime -Instanz aus einer bestehenden Instanz, setzen jedoch alles "kleiner" und dann Millisekunden auf Null. Sie können eine Erweiterungsmethode verwenden:

%Vor%

Oder für ein vollständiges Beispiel mit Ihrem Code:

%Vor%     
Christian.K 19.03.2012 10:10
quelle
2

Wenn Sie Millisekunden ohne Probleme mit Ticks entfernen möchten.

%Vor%     
kirk 04.05.2016 03:00
quelle
-1

Verwenden Sie C # DateTime Formatierung , wie im MSDN beschrieben. Ihre Analyse zur Milisekundenberechnung ist möglicherweise falsch. Auch für die Verkettung von Strings verwenden Sie einen StringBuilder

    
Indy9000 19.03.2012 10:09
quelle

Tags und Links