Formattazione di una stringa data / ora nel formato AAAAMMGG

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

  • Fai attenzione quando chiami DateTime.Now più volte in questo modo. Ad esempio, se DateTime.Now.Month viene chiamato solo prima della mezzanotte del 31 gennaio e DateTime.Now.Day dopo la mezzanotte, riceverai la data come 20120101. ' è improbabile, ma certamente possibile.
  • Questo è già ' risposto ', ma il La differenza principale tra il loro metodo e il tuo è il modo in cui verranno gestiti i mesi e le date a una cifra. Il tuo stamperebbe 201911 per il 1 ° gennaio 2019, mentre gli altri stamperanno 20190101

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *