Ich arbeite mit einigen seltsamen APIs, bei denen die Daten im Format JJJJMMTT gesendet werden müssen.
Ich habe mir überlegt, so etwas zu tun:
string date = string.Concat(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
Gibt es eine bessere Vorgehensweise?
Kommentare
- Seien Sie vorsichtig, wenn Sie
DateTime.Now
mehrmals so aufrufen. Zum Beispiel, wennDateTime.Now.Month
nur aufgerufen wird Vor Mitternacht des 31. Januar undDateTime.Now.Day
nach Mitternacht erhalten Sie das Datum wie20120101
. Es ' ist unwahrscheinlich, aber sicherlich möglich. - Dies ist bereits ' beantwortet ', aber die Der Hauptunterschied zwischen ihrer und Ihrer Methode besteht darin, wie einstellige Monate und Daten behandelt werden. Ihre würden 201911 für den 1. Januar 2019 drucken, während die anderen 20190101
Antwort
Ja, es gibt: Datumsformatierung
var dateString = DateTime.Now.ToString("yyyyMMdd");
Ja, es gibt: Datumsformatierung
var dateString = DateTime.Now.ToString("yyyyMMdd");
Antwort
Eine andere Option wäre das Erstellen von Erweiterungsmethoden wie:
public static class DateTimeExtensions { public static string ToYMD(this DateTime theDate) { return theDate.ToString("yyyyMMdd"); } public static string ToYMD(this DateTime? theDate) { return theDate.HasValue ? theDate.Value.ToYMD() : string.Empty; } }
Sie würden es wie folgt verwenden:
var dateString = DateTime.Now.ToYMD();
Die implementierte Erweiterung funktioniert auch für nullable DateTime-Werte.
Wenn Sie viel mit diesen „yyyyMMdd“ -formatierten DateTime-Werten arbeiten, hat die Erweiterungsmethode den Vorteil, dass weniger eingegeben werden muss.