Sto lavorando con alcune API strane che richiedono linvio delle date nel formato AAAAMMGG.
Stavo pensando di fare qualcosa del genere:
string date = string.Concat(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
Esiste una pratica migliore?
Commenti
Risposta
Sì, cè: Formattazione data
var dateString = DateTime.Now.ToString("yyyyMMdd");
Risposta
Unaltra opzione sarebbe creare metodi di estensione come:
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; } }
Lo useresti in questo modo:
var dateString = DateTime.Now.ToYMD();
Lestensione implementata funziona anche per valori DateTime nullable.
Se stai lavorando molto con questi valori DateTime formattati “yyyyMMdd”, il metodo di estensione ha il vantaggio di digitare meno.
DateTime.Now
più volte in questo modo. Ad esempio, seDateTime.Now.Month
viene chiamato solo prima della mezzanotte del 31 gennaio eDateTime.Now.Day
dopo la mezzanotte, riceverai la data come20120101
. ' è improbabile, ma certamente possibile.