2009-03-19 14 views

risposta

44

lettori Xml in generale si aspettano date/orari in un formato molto specifico; è possibile utilizzare da soli usando XmlConvert:

string s = XmlConvert.ToString(DateTime.Now); 
DateTime when = XmlConvert.ToDateTime(s); 

Se si utilizza qualcosa di diverso, dovrete leggerlo come una stringa e utilizzare DateTime.TryParseExact (o simile) per specificare la stringa di formato reale:

string s = reader.ReadContentAsString(); 
DateTime when = DateTime.ParseExact(s, "M/d/yy hh:mm tt", 
    CultureInfo.InvariantCulture); 

Se si utilizza XmlSerializer, è possibile utilizzare una proprietà shim per eseguire la conversione - fatemi sapere se questo è quello che stai facendo ...

+0

I dati che stavo fornendo erano il 29/10/2012 alle 15:25 e quello non è riuscito. Quando ho cambiato il 10/11/2012 alle 15:25, ha funzionato. –

+0

@MarcGravell, quando provo a deserializzare alcuni feed rss usando 'XmlSerializer', l'elemento' PubDate' causa un errore. come posso risolvere il problema? – burhan

+2

@burhan osservando in che modo viene inserito il valore e gestendolo in modo appropriato? In alternativa, il framework principale include classi mirate agli RSS che potrebbero fare un lavoro migliore. –

82

Secondo l'XML schema specifiche, i valori di tempo data dovrebbe essere in ISO860 1 formato, ad esempio qualcosa come

2009-03-13T22:16:00 
+2

In ruby ​​usare il metodo 'iso8601', ad esempio' Time.now.iso8601'. – Zubin

+2

Per curiosità, il formato ISO8601 dovrebbe assomigliare a '2009-03-18T22: 16: 00-05: 00', ma la risposta di David (omettendo il fuso orario) funziona anche per me (mentre il formato ISO8601 non funziona). È questo a causa di una serializzazione locale in XmlConverter (che quindi non ha bisogno del fuso orario)? – djiango

+1

In ISO8601, il fuso orario è facoltativo, quindi sia la mia stringa originale che la vostra stringa sono valide come data ora ISO8601. Secondo http://www.w3.org/TR/xmlschema-2/#deviantformats, il fuso orario è anche facoltativo nello schema XML. Non sono sicuro del motivo per cui la versione del fuso orario non funziona per te. –

Problemi correlati