Domanda

Ho scritto un'app asp.net e una delle mie routine di postback salva semplicemente i dati dei moduli inviati dagli utenti a un database sql 2005. Tutto funziona alla grande sulla mia macchina di sviluppo, ma quando eseguo la distribuzione sul sito live ricevo date non valide dal mio controllo delle date di analisi.

Fondamentalmente si aspetta un formato di data americano sulla macchina live ma questo non è quello che voglio. L'utente deve poter accedere nel formato gg / MM / aaaa. Quindi una data valida come il 21/10/2009 restituisce errori sul server live ma non sul mio computer di sviluppo. Di seguito è riportato il codice che genera l'eccezione.

DateTime dt;
dt = DateTime.Parse(sdate);  
//sdate in GB dd/MM/yyyy format

È possibile forzare la routine di analisi ad aspettarsi la data nel formato gg / MM / aaaa?

È stato utile?

Soluzione

Fai così:

    System.Globalization.CultureInfo cultureinfo = 
        new System.Globalization.CultureInfo("en-gb");
    DateTime dt = DateTime.Parse("13/12/2009", cultureinfo);

Altri suggerimenti

Puoi utilizzare DateTime.ParseExact per specificare un formato previsto.

Un'altra opzione è quella di specificare la cultura che si desidera utilizzare nel file web.config:

<system.web>
    ...
    <globalization 
        culture="da-DK" 
        uiCulture="da-DK" requestEncoding="utf-8" responseEncoding="utf-8"
    />
</system.web>

Sì, ParseExact lo farà come menzionato da Matt.

Il codice sarebbe simile a:

dt  = DateTime.ParseExact(sdate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top