Mam ciąg znaków "2009-10-08 08: 22: 02Z", który jest w formacie ISO 8601.Parsowanie ciągu znaków ISO 8601 do DateTime w .NET?
Jak używać DateTime do analizowania tego formatu?
Mam ciąg znaków "2009-10-08 08: 22: 02Z", który jest w formacie ISO 8601.Parsowanie ciągu znaków ISO 8601 do DateTime w .NET?
Jak używać DateTime do analizowania tego formatu?
Nie, to nie jest ISO 8601. Valid ISO 8601 reprezentacja miałaby T
między częściami czasu i daty.
DateTime
może natywnie obsługiwać prawidłowe formaty ISO 8601. Jeśli jednak utkniesz w tym konkretnym przedstawieniu, możesz spróbować wpisać DateTime.ParseExact
i podać ciąg formatu.
Pozdrawiam, ale na wiki widać oba formaty. – Kaya
Nie udało mi się sparsować ciągu znaków za pomocą "u" lub "s", ale zastąpienie T spacja jest łatwe. To wydaje się działać. Używam VB .NET z .NET 2.0. –
@romkyns Odpowiedź wydaje się być dla mnie poprawna. Ze swojego "standardu ISO-8601" przeczytałem w rozdziałach 3.4.3 i 4.3.2, że "T" jest potrzebny, gdy wyświetlana jest data i godzina. Zobacz także przykłady B.1.3. Daty w formacie przedstawionym w pytaniu są obsługiwane natywnie. – StefanG
string txt= "2009-10-08 08:22:02Z";
DateTime output = DateTime.ParseExact(txt, "u", System.Globalization.CultureInfo.InvariantCulture);
Klasa DateTime wspiera standard format string U dla tego formatu
myślę o formacie ISO (z separatorem T), użyj "s" zamiast "u". Lub użyj:
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);
wspierać oba formaty.
ISO 8601 umożliwia również określenie przesunięcia strefy czasowej (np. "2009-10-08T12: 52: 02 + 04: 30" byłby taki sam jak powyżej). Jednak żadna z odpowiedzi nie dotyczy tego ... –