Estoy trabajando con algunas API extrañas que requieren que las fechas se envíen en el formato AAAAMMDD.
Estaba pensando en hacer algo como esto:
string date = string.Concat(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
¿Existe una mejor práctica?
Comentarios
Respuesta
Sí, existe: Formato de fecha
var dateString = DateTime.Now.ToString("yyyyMMdd");
Respuesta
Otra opción sería crear métodos de extensión 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; } }
Lo usaría como:
var dateString = DateTime.Now.ToYMD();
La extensión implementada también funciona para valores DateTime que aceptan valores NULL.
Si está trabajando mucho con estos valores DateTime con formato «aaaaMMdd», el método de extensión tiene la ventaja de escribir menos.
DateTime.Now
varias veces de esta manera. Por ejemplo, siDateTime.Now.Month
se llama simplemente antes de la medianoche del 31 de enero yDateTime.Now.Day
después de la medianoche, obtendrá la fecha como20120101
. Es ' es poco probable, pero ciertamente posible.