una - Establecer el formato de fecha y hora predeterminado c#
formato fecha datetime c# (6)
¿Hay alguna manera de establecer o anular el formato predeterminado de DateTime para una aplicación completa? Estoy escribiendo una aplicación en C # .Net MVC 1.0 y uso muchos genéricos y reflexión. Sería mucho más simple si pudiera anular el formato predeterminado DateTime.ToString () para que sea "dd-MMM-aaaa". No deseo que este formato cambie cuando el sitio se ejecuta en una máquina diferente.
Editar: solo para aclarar, me refiero específicamente a llamar a ToString, no a alguna otra función de extensión, esto se debe al código de reflexión / generado. Sería más fácil simplemente cambiar la salida ToString.
Depende de la configuración de localización de su aplicación. Cambie eso en consecuencia para obtener el formato correcto.
De lo contrario, tenga un helper-class o un método de extensión que siempre maneje su DateTime.
public static string ToMyDateTime(this DateTime dateTime) {
return dateTime.ToString("dd-MMMM-yy");
}
El "formato predeterminado" de una fecha y hora es:
ShortDatePattern + '' '' + LongTimePattern
al menos en la implementación mono actual. Esto es particularmente doloroso en caso de que desee mostrar algo como 2001-02-03T04: 05: 06Z, es decir, la fecha y la hora combinadas como se especifica en ISO 8606 , pero no es un gran problema en su caso:
using System;
using System.Globalization;
using System.Threading;
namespace test {
public static class Program {
public static void Main() {
CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
culture.DateTimeFormat.LongTimePattern = "";
Thread.CurrentThread.CurrentCulture = culture;
Console.WriteLine(DateTime.Now);
}
}
}
Esto establecerá el comportamiento predeterminado de ToString en las fechas para devolver el formato esperado.
Puedes escribir un ExtensionMethod así:
public static string ToMyString(this DateTime dateTime)
{
return dateTime.ToString("needed format");
}
Si quiere asegurarse de que su cultura se mantenga igual, simplemente configúrela para evitar problemas.
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("nl-BE");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
El ejemplo anterior establece el cultivo del hilo en belga-holandés.
CurrentCulture hace todo el manejo de fecha y hora y CurrentUICulture maneja la localización de UI como recursos.
DateTime.ToString() combina las cadenas de formato personalizadas devueltas por las propiedades ShortDatePattern y LongTimePattern de DateTimeFormatInfo . Puede especificar estos patrones en DateTimeFormatInfo.CurrentInfo .
Nunca lo intenté yo mismo.