Formatando uma string de data e hora no formato AAAAMMDD

Estou trabalhando com algumas APIs estranhas que exigem que as datas sejam enviadas no formato AAAAMMDD.

Eu estava pensando em fazer algo assim:

string date = string.Concat(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); 

Existe uma prática melhor?

Comentários

  • Tenha cuidado ao chamar DateTime.Now várias vezes como esta. Por exemplo, se DateTime.Now.Month for chamado apenas antes da meia-noite de 31 de janeiro e DateTime.Now.Day depois da meia-noite, você obterá uma data como 20120101. É ' é improvável, mas certamente possível.
  • Isso já foi ' respondido ', mas o A principal diferença entre o método deles e o seu é como os meses e datas de 1 dígito serão tratados. O seu imprimirá 201911 em 1º de janeiro de 2019, enquanto os outros imprimirão 20190101

Resposta

Sim, existe: Formatação de data

var dateString = DateTime.Now.ToString("yyyyMMdd"); 

Resposta

Outra opção seria criar métodos de extensão como:

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; } } 

Você o usaria como:

var dateString = DateTime.Now.ToYMD(); 

A extensão implementada também funciona para valores DateTime anuláveis.

Se você estiver trabalhando muito com esses valores DateTime formatados em “aaaaMMdd”, o método de extensão terá a vantagem de menos digitação.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *