Formatarea unui șir datetime în format YYYYMMDD

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

  • Aveți grijă când apelați DateTime.Now de mai multe ori astfel. De exemplu, dacă DateTime.Now.Month este numit doar înainte de miezul nopții din 31 ianuarie și DateTime.Now.Day după miezul nopții, veți primi data ca 20120101. Este ' este puțin probabil, dar sigur posibil.
  • Acest lucru este deja ' a răspuns ', dar principala diferență între metoda lor și a dvs. este modul în care vor fi tratate lunile și datele de 1 cifră. A dvs. ar tipări 201911 pentru 1 ianuarie 2019, în timp ce celelalte vor tipări 20190101

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.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *