2012-11-06 10 views
10

Sto cercando di convertire una stringa in un datetimeConverti stringa di DateTime in C# Regno Unito e il formato US

Sono stato con

DateTime convertedDate = DateTime.Parse(lastModificationDate); 

per convertire la data

il mio problema è, a volte la data sarà in formato Regno Unito e, talvolta, in formato US

cioè UK 11/09/2011 10:34 US 2/28/2010 13:56

Come posso gestire entrambi i formati quando non sono sicuro di quale formato sarà la stringa, ovvero noi o uk?

+0

Questo è impossibile senza qualche indicazione se si tratta di Stati Uniti o nel Regno Unito, come si potrebbe avere 2 stringhe identiche con significati diversi. Non è disponibile una versione UTC della data? –

+1

@JustinHarvey: cosa intendi per "versione UTC"? UTC non è un formato. Entrambi questi valori possono essere in UTC, in diversi formati. –

risposta

17

Fondamentalmente non è possibile. Non hai abbastanza dati. Come umano, quale data è coinvolta qui?

11/09/2011 10:34 

È l'11 settembre o il 9 novembre?

Se non si riesce a distinguere come umano, non c'è possibilità che un computer lo faccia.

Ora, se è possibile ottenere un segnale da altrove nella stessa origine dati, allora questo è un inizio - per esempio, si potrebbe euristico cercare di analizzare tutte le date come formato degli Stati Uniti, e tutte le date il formato del Regno Unito, e se Il 100% passa come formato nel Regno Unito ma il 60% fallisce nel formato degli Stati Uniti (a causa del tentativo di analizzare i giorni come mesi non validi), si potrebbe ragionevolmente presumere che siano date del Regno Unito.

Questa soluzione non sarà mai completa, perché potresti disporre di un'unica fonte di dati con un gruppo di date che sono tutte valide per (ma con significati diversi) in entrambi i formati.

+0

+1 per tagliare la storia lunga breve e semplice. – Adil

+0

ok grazie per il tuo aiuto – simon1230756

1

È necessario memorizzare i tempi di data nel database in un formato standard, in genere UTC, proprio per questo motivo.

Poi si può analizzare l'utenti di data e ora locale da UTC utilizzando JavaScript ecc

+0

UTC non è un formato, è un fuso orario (in modo efficace). Inoltre, non c'è nessuna indicazione che ci sia un database installato qui. Se il valore * è * memorizzato in un database, non dovrebbe essere memorizzato in alcun formato di stringa. –

Problemi correlati