2012-02-05 16 views
5

So che questa domanda è stata posta in diversi modi, e li ho guardati tutti e nessuna delle soluzioni sembra funzionare per me. Quindi, spero che forse voi ragazzi potete darmi una mano veloce.Conversione del formato "yyyy-MM-ddTHH: mm: ss.fffZ" a DateTime

La stringa di input è: "2000-01-01T12: 00: 000Z". Devo prendere quella stringa di input e convertirla in DateTime in modo che possa essere memorizzata nel database.

Sto usando ParseExact, ma continuo a ricevere l'eccezione della stringa di data non riconosciuta. Dove sto andando male?

inValue.LatestDepartTime = "2000-01-01T12:00:000Z"; 
DateTime _latestDepartTime = DateTime.ParseExact(inValue.LatestDepartTime, "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture); 

risposta

5

La stringa del formato deve essere uguale a esatto corrisponde all'ingresso.

Comprende i valori letterali T e Z.

+0

Quindi, dovrei essere in grado di analizzare il T e Z dalla stringa originale che dovrebbe darmi: 2020-01-01 12: 00: 000. Quindi le due stringhe corrisponderanno esattamente. Ma, ho provato questo e ancora ottengo lo stesso errore. Una cosa da notare, e forse questo aiuterà, nel debugging ho notato che il _latestDepartTime è impostato su 1/1/0001 12: 12: 000 AM ogni volta che ho provato questo. – CalvinBlount

+0

No; è necessario includere 'T' e' Z' nella stringa di formato. Potrebbe essere necessario avvolgerli tra virgolette singole; Non ricordo. – SLaks

+0

Stai visualizzando il valore predefinito (vuoto) di un 'DateTime'. – SLaks

3

Non si specifica il T nel modello.

Detto questo, si consiglia di dare un'occhiata alla classe XmlConvert, che fornisce i metodi per la conversione di questo formato.

4

È necessario includere \\T e \\Z nella stringa del formato corrispondente ai valori letterali T e Z.

1

Hai bisogno di mettere le virgolette singole per le T e Z:

DateTime parsedDateTime; 
DateTime.TryParseExact(obj, "yyyy-MM-dd'T'HH:mm:ss'Z'", null, System.Globalization.DateTimeStyles.None, out parsedDateTime); 
return parsedDateTime; 
2

Usa yyyy-MM-dd'T'HH:mm:ss.fff'Z'

Il codice è:

public DateTime convertIsoToDateTime (string iso) 
{ 
    return DateTime.ParseExact(iso, "yyyy-MM-dd'T'HH:mm:ss.fff'Z'", CultureInfo.InvariantCulture); 
} 
Problemi correlati