Ho una stringa, "2009-10-08 08: 22: 02Z", che è nel formato ISO 8601.Parsing della stringa ISO 8601 su DateTime in .NET?
Come utilizzare DateTime per analizzare questo formato?
Ho una stringa, "2009-10-08 08: 22: 02Z", che è nel formato ISO 8601.Parsing della stringa ISO 8601 su DateTime in .NET?
Come utilizzare DateTime per analizzare questo formato?
No, non è ISO 8601. Valid ISO 8601 la rappresentazione avrebbe T
tra le parti di data e ora.
DateTime
può gestire in modo nativo i formati ISO 8601 validi. Tuttavia, se sei bloccato con questa particolare rappresentazione, puoi provare DateTime.ParseExact
e fornire una stringa di formato.
Cheers ma il wiki mostra entrambi i formati – Kaya
Non ero in grado di analizzare la mia stringa usando "u" o "s", ma la sostituzione di T con uno spazio è facile. Questo sembra funzionare. Sto usando VB .NET con .NET 2.0. –
@romkyns La risposta mi sembra corretta. Dal tuo documento "ISO-8601 standard" ho letto nei capitoli 3.4.3 e 4.3.2 che la "T" è necessaria quando viene mostrata la data e l'ora. Vedi anche esempi B.1.3. E le date in formato come presentate in questione sono gestite in modo nativo. – StefanG
string txt= "2009-10-08 08:22:02Z";
DateTime output = DateTime.ParseExact(txt, "u", System.Globalization.CultureInfo.InvariantCulture);
La classe DateTime supporta l'standard format string di u per questo formato
Credo che per il formato ISO (con il separatore T), usare "s" al posto di "u". O utilizzare:
string txt= "2009-10-08 08:22:02Z";
DateTime output = DateTime.ParseExact(txt, new string[] {"s", "u"}, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
per supportare entrambi i formati.
ISO 8601 consente anche di specificare un offset del fuso orario (ad esempio "2009-10-08T12: 52: 02 + 04: 30" sarebbe lo stesso orario di cui sopra). Tuttavia nessuna delle risposte risolve questo problema ... –