Lucrez cu câteva API-uri ciudate care necesită trimiterea datelor în format YYYYMMDD.
Mă gândeam să fac așa ceva:
string date = string.Concat(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
Există o practică mai bună?
Comentarii
Răspuns
Da, există: Formatarea datei
var dateString = DateTime.Now.ToString("yyyyMMdd");
Răspuns
O altă opțiune ar fi crearea unei metode de extensie precum:
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; } }
O veți folosi ca:
var dateString = DateTime.Now.ToYMD();
Extensia implementată funcționează și pentru valori Nullable DateTime.
Dacă faceți o mulțime de muncă cu aceste valori DateTime formatate „aaaaMMdd”, metoda extensiei are avantajul unei mai puține tastări.
DateTime.Now
de mai multe ori astfel. De exemplu, dacăDateTime.Now.Month
este numit doar înainte de miezul nopții din 31 ianuarie șiDateTime.Now.Day
după miezul nopții, veți primi data ca20120101
. Este ' este puțin probabil, dar sigur posibil.