Was ist die einfachste Methode zum entfernen der Millisekunde ist Teil eines DateTime.UctNow.TimeOfDay?
Ich habe eine Theorie, warum der folgende code nicht produzieren die Ergebnisse, die ich brauche:
endDate = DateTime.UtcNow.AddDays(1).ToShortDateString() + " " +
DateTime.UtcNow.TimeOfDay.Subtract(
new TimeSpan(0, 0, 0, 0, DateTime.UtcNow.TimeOfDay.Milliseconds));
Muss der Prozessor berechnen Sie die DateTime.UtcNow.TimeOfDay.Milliseconds
, und durch die Zeit, die Länge eines einzelnen tick von der CPU (und die Zeit zum verarbeiten dieser Eigenschaft und ein Ergebnis zurückgeben), Es nicht bezeichnen, dass DateTime.UtcNow.TimeOfDay.Milliseconds
subtrahieren die genaue Höhe der Millisekunden angegeben, die von der DateTime.UtcNow.TimeOfDay
Ich muss wissen, was ist die einfachste und effektivste Methode zum entfernen der Betrag von Millisekunden aus DateTime.UtcNow.TimeOfDay
, ohne eine riesige Menge an Prozessor-Zeit? Diese Anwendung von mir ist ziemlich groß, und dieses problem ist ziemlich einfach. Aber wenn diese Anwendung wird eingesetzt, es gibt keinen Platz für Sie, instabil zu sein. Diese Millisekunden muss getrimmt werden, weil es gesendet wird, um eine gespeicherte Prozedur in SQL Server, und dieser bestimmte gespeicherte Prozedur nicht unterstützt Millisekunden auf DateTimes. Ich habe auch dieses problem Häufig, aber ich der Regel konvertieren Sie das Datum auf den string (das ist ein cast auf seiner eigenen), split den string am Punkt in Millisekunden ein, und verwenden Sie die index-position 0, um die Zeit, die ich brauche. Gibt es einen kürzeren, effizienteren Weg?
Stabilität und Geschwindigkeit ist mir wichtig.
Vielen Dank im Voraus
- Kannst du nicht einfach tun
_myDate.Milliseconds = 0;
? DateTime
Instanzen unveränderlich sind, soMilliseconds
hat keine set-Eigenschaft.- Warum teilen, wenn Sie können geben Sie den format-string ohne Millisekunden, könnte man dann analysieren und es wieder zu
DateTime
- Warum sind Sie mischen DateTime.Jetzt und DateTime.UtcNow in einem einzigen Ausdruck? Das erscheint mir als fast certainyl falsch. Es ist auch nicht klar, warum Sie konvertieren eine Zeichenfolge in Erster Linie...
- das ist ein Unfall
- alles muss uct. danke für den Hinweis it out
- utc* mein fail. lol
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alles, was Sie wissen müssen über die Anpassung der DateTime ToString format ist hier auf der MSDN-Website.
In einfachen Worten, so etwas wie dieses:
(ändern Sie das format wie gewünscht)
Nicht wiederholt verwenden Sie die
Now
/UtcNow
Eigenschaft im gleichen Ausdruck. Holen Sie sich den Wert einmal, und verwenden Sie den gleichen Wert in den verschiedenen Orten:Wenn Sie wollen nur das Datum formatiert in einer besonderen Weise, und brauchen nicht die tatsächliche DateTime-Wert, können Sie einfach überspringen Sie die Anzahl von Millisekunden in das format, zum Beispiel:
Als Sie senden den Wert an die Datenbank, die Sie sollten nicht senden Sie es als string, sondern als ein DateTime-Wert:
Wenn Sie entfernen möchten Millisekunden, ohne irgendein problem auf Zecken.
Im Grunde erstellen Sie eine neue
DateTime
- Instanz aus einer vorhandenen, aber alles, was den "kleineren" dann Millisekunden auf null. Sie können eine extensions-Methode:Oder für ein vollständiges Beispiel, die mit Ihrem code:
Verwendung von C# DateTime Formatierung wie beschrieben sehr gut in der MSDN. Ihre Analyse auf die Millisekunde Berechnung ist sehr wahrscheinlich falsch. Auch für die string-Verkettung verwenden Sie ein StringBuilder -