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.Now
několikrát takto. Například pokud seDateTime.Now.Month
volá jen před půlnocí 31. ledna aDateTime.Now.Day
po půlnoci dostanete datum jako20120101
. ' je nepravděpodobné, ale určitě možné.