Pregunta Establecer el formato de fecha y hora predeterminado c #


¿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.


31
2017-09-07 12:30


origen


Respuestas:


El "formato predeterminado" de una fecha y hora es:

ShortDatePattern + ' ' + LongTimePattern

al menos en la corriente implementación mono. 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 tu 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.


44
2017-09-07 12:48



Depende de la configuración de localización de su aplicación. Cambiar 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");
}

7
2017-09-07 12:38



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.


1
2017-09-07 12:40



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.


1
2017-09-07 12:51



Puedes escribir un ExtensionMethod así:

public static string ToMyString(this DateTime dateTime)
{
  return dateTime.ToString("needed format");
}

0
2017-09-07 12:35



No estoy seguro de si esto funcionaría para una aplicación web, pero podría tratar de configurar el DateTimeFormat propiedad para la cultura actual.

Comprobar esta y especialmente esta.


0
2017-09-07 12:49