Pregunta

¿Cómo se configura globalmente el formato de fecha en ASP.NET?

Mi máquina y servidores locales tienen la Configuración regional establecida en "Inglés (Nueva Zelanda)".

Cuando formateo una fecha con dd / MM / aaaa espero ver 19/11/2008 por hoy, por ejemplo.

Hasta hace poco, eso es lo que realmente obtuve tanto de mi máquina local como de los servidores.

Recientemente, por alguna misteriosa razón, nuestras máquinas locales han cambiado muy ligeramente. ¡A pesar de que todavía esté configurado en "Inglés (Nueva Zelanda)", el delimitador de fecha ha cambiado de / a - ! No se ha producido el mismo cambio en los servidores que todavía muestran "Inglés (Nueva Zelanda)". y el / para el delimitador de fecha.

Entonces, para mi máquina local, para el formato dd / MM / aaaa obtengo 19-11-2008 en lugar de 19/11/2008 .

Esto es un poco desconcertante.

La única forma de evitarlo que puedo ver hasta ahora es escapar de las barras y establecer el formato en dd \ / MM \ / aaaa . Parece funcionar, pero no parece ser la solución ideal.

¿Alguien puede ayudarme?

NOTA: Esto es para una aplicación de intranet y no me importa la verdadera globalización. Solo quiero arreglar el formato de fecha y no hacer que me cambie.

¿Fue útil?

Solución

Puede cambiar la cultura de hilo actual en su archivo Global.asax y anular el formato de fecha, por ejemplo:

using System.Globalization;
using System.Threading;

//...
protected void Application_BeginRequest(Object sender, EventArgs e)
{    
  CultureInfo newCulture = (CultureInfo) System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
  newCulture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
  newCulture.DateTimeFormat.DateSeparator = "-";
  Thread.CurrentThread.CurrentCulture = newCulture;
}

Otros consejos

En web.config, configure la etiqueta según la siguiente documentación

<system.web>
    <globalization  culture="en-NZ"  uiCulture="en-NZ"/>
</system.web>

Una buena manera es configurar Web.Config, el formato de fecha aparece en todos los componentes de un aspx

<system.web>    
<globalization uiCulture="en" culture="en-NZ" />
</system.web>

Puedes configurar tu cultura sin manipulación:


using System.Globalization;
using System.Threading;

//... protected void Application_BeginRequest(Object sender, EventArgs e) {
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-NZ"); }

Es una publicación antigua, pero pensé que podría ser útil mencionarlo aquí, mi problema era algo parecido a lo que el OP había pedido, pero la solución fue que la cultura cambió en el IIS, no desde el panel de control.

IIS dice que es una selección de cultura propia, que por defecto seguirá la cultura informática local. Pero por alguna razón, se cambió a una cultura diferente, y comencé a obtener esos formatos de fecha extraños.

Puede buscar más respuestas aquí .

Para cadenas de formato, el carácter de formato / no se resuelve en el literal " / " como es de esperar En cambio, se resuelve en el separador de fecha y hora actual como está configurado en su configuración regional. Intente cambiar la propiedad DateTimeFormatInfo.DateSeparator.

Para obtener más información, consulte: http://msdn.microsoft.com /en-us/library/8kb3ddd4.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top