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
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
Alles, was Sie über die Anpassung des DateTime ToString-Formats wissen müssen, finden Sie hier auf MSDN.
In einfachen Worten, etwa so:
%Vor%(Ändern Sie das Format wie gewünscht)
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:
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% 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:
Oder für ein vollständiges Beispiel mit Ihrem Code:
%Vor%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