Domanda

Come si imposta a livello globale il formato della data in ASP.NET?

La mia macchina locale e i miei server hanno Impostazioni regionali impostate su " inglese (Nuova Zelanda) " ;.

Quando formatterò una data con gg / MM / aaaa mi aspetto di vedere 19/11/2008 per oggi, ad esempio.

Fino a poco tempo fa, questo è ciò che ho effettivamente ottenuto sia dalla mia macchina locale che dai server.

Proprio di recente, per qualche misteriosa ragione, le nostre macchine locali sono cambiate leggermente. Nonostante sia ancora impostato su "inglese (Nuova Zelanda)", il delimitatore di data è cambiato da / a - ! La stessa modifica non si è verificata sui server che mostrano ancora "inglese (Nuova Zelanda)" e il / per il delimitatore di data.

Quindi ora per il mio computer locale, per il formato gg / MM / aaaa ricevo 19-11-2008 invece di 19/11/2008 .

Questo è un po 'sconcertante.

L'unico modo per evitarlo finora è sfuggire alle barre e impostare il formato su dd \ / MM \ / yyyy . Sembra funzionare, ma non sembra essere la soluzione ideale.

Qualcuno può aiutarmi, per favore?

NOTA: questo è per un'applicazione Intranet e non mi interessa la vera globalizzazione. Voglio solo correggere il formato della data e non cambiarlo.

È stato utile?

Soluzione

Puoi cambiare la cultura del thread corrente nel tuo file Global.asax e sovrascrivere il formato della data, ad esempio:

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;
}

Altri suggerimenti

In web.config, imposta il tag secondo la seguente documentazione

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

Un buon modo è configurare Web.Config, il formato della data appare in tutti i componenti di un aspx

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

Puoi impostare la tua cultura senza manipolazione:


using System.Globalization;
using System.Threading;

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

È un vecchio post, ma ho pensato che potesse essere utile menzionarlo qui, il mio problema era qualcosa di simile a quello che l'OP ha chiesto, ma la soluzione era che la cultura era cambiata in IIS, non dal pannello di controllo.

IIS ha la propria selezione di cultura, che per impostazione predefinita seguirà la cultura del computer locale. Ma per qualche ragione, è stato cambiato in una cultura diversa e ho iniziato a ottenere quegli strani formati di data.

Puoi cercare altre risposte qui .

Per le stringhe di formato, il carattere di formato / in realtà non si risolve nel letterale " / " come ti aspetteresti. Al contrario, si risolve nel separatore di data e ora corrente come configurato nelle impostazioni internazionali. Prova a modificare la proprietà DateTimeFormatInfo.DateSeparator.

Per ulteriori informazioni, vedere: http://msdn.microsoft.com /en-us/library/8kb3ddd4.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top