Pracuji s některými podivnými rozhraními API, která vyžadují odeslání dat ve formátu RRRRMMDD.
Napadlo mě udělat něco takového:
string date = string.Concat(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
Existuje lepší postup?
Komentáře
Odpověď / h2>
Ano, existuje: Formátování data
var dateString = DateTime.Now.ToString("yyyyMMdd");
Ano, existuje: Formátování data
var dateString = DateTime.Now.ToString("yyyyMMdd");
Odpověď
Další možností by bylo vytvořit metody rozšíření, například:
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; } }
Použili byste to jako:
var dateString = DateTime.Now.ToYMD();
Implementované rozšíření funguje také pro hodnoty Nullable DateTime.
Pokud děláte hodně práce s těmito hodnotami DateTime ve formátu „yyyyMMdd“, má metoda rozšíření výhodu menšího psaní.
DateTime.Nowněkolikrát takto. Například pokud seDateTime.Now.Monthvolá jen před půlnocí 31. ledna aDateTime.Now.Daypo půlnoci dostanete datum jako20120101. ' je nepravděpodobné, ale určitě možné.