Dar formato a una cadena de fecha y hora en el formato AAAAMMDD

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

  • Tenga cuidado al llamar a DateTime.Now varias veces de esta manera. Por ejemplo, si DateTime.Now.Month se llama simplemente antes de la medianoche del 31 de enero y DateTime.Now.Day después de la medianoche, obtendrá la fecha como 20120101. Es ' es poco probable, pero ciertamente posible.
  • Esto ya está ' respondido ', pero el La principal diferencia entre su método y el tuyo es cómo se manejarán los meses y las fechas de 1 dígito. El tuyo imprimiría 201911 para el 1 de enero de 2019, mientras que los otros imprimirían 20190101

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *