Formátování řetězce datetime ve formátu RRRRMMDD

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

  • Buďte opatrní, když voláte DateTime.Now několikrát takto. Například pokud se DateTime.Now.Month volá jen před půlnocí 31. ledna a DateTime.Now.Day po půlnoci dostanete datum jako 20120101. ' je nepravděpodobné, ale určitě možné.
  • Toto je již ' zodpovězeno ', ale hlavní rozdíl mezi jejich metodou a vaší metodou je, jak budou zacházeny s 1místnými měsíci a daty. Vaše vytiskne 1. ledna 2019 201911, zatímco ostatní vytisknou 20190101

Odpověď / h2>

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í.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *