Päivämäärämerkkijonon muotoilu VVVVKKPP-muodossa

Työskentelen joidenkin outojen sovellusliittymien kanssa, jotka edellyttävät päivämäärien lähettämistä VVVVKKPP-muodossa.

Ajattelin tehdä jotain tällaista:

string date = string.Concat(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); 

Onko olemassa parempaa käytäntöä?

Kommentit

  • Ole varovainen, kun soitat DateTime.Now useita kertoja tällä tavoin. Esimerkiksi, jos DateTime.Now.Month kutsutaan vain ennen 31. tammikuuta keskiyötä ja DateTime.Now.Day keskiyön jälkeen saat päivämäärän kuten 20120101. Se ' on epätodennäköistä, mutta varmasti mahdollista.
  • Tämä on jo ' vastattu ', mutta tärkein ero heidän menetelmänsä ja sinun välillä on se, miten 1-numeroiset kuukaudet ja päivämäärät käsitellään. Sinun tulisi tulostaa 201911 1. tammikuuta 2019, kun taas muut tulostavat 20190101

Vastaus

Kyllä on: Päivämäärän muotoilu

var dateString = DateTime.Now.ToString("yyyyMMdd"); 

vastaus

Toinen vaihtoehto olisi luoda laajennusmenetelmät, kuten:

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; } } 

Käytät sitä seuraavasti:

var dateString = DateTime.Now.ToYMD(); 

Toteutettu laajennus toimii myös Nullable DateTime -arvojen kanssa.

Jos teet paljon työtä näiden ”yyyyMMdd” muotoiltujen DateTime-arvojen kanssa, laajennusmenetelmällä on etuna vähemmän kirjoittamista.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *