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
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.
DateTime.Now
useita kertoja tällä tavoin. Esimerkiksi, josDateTime.Now.Month
kutsutaan vain ennen 31. tammikuuta keskiyötä jaDateTime.Now.Day
keskiyön jälkeen saat päivämäärän kuten20120101
. Se ' on epätodennäköistä, mutta varmasti mahdollista.