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
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.
DateTime.Now
várias vezes como esta. Por exemplo, seDateTime.Now.Month
for chamado apenas antes da meia-noite de 31 de janeiro eDateTime.Now.Day
depois da meia-noite, você obterá uma data como20120101
. É ' é improvável, mas certamente possível.