Parsowanie string do DateTime - jakiego formatu użyć?

0

Witam wszystkich,
Mam datę pobraną z e-maila

Thu, 09 Jan 2020 03:15:41 +0100

Próbuję ją przekonwertować do DateTime. Na podstawie tego artykułu https://www.c-sharpcorner.com/blogs/date-and-time-format-in-c-sharp-programming1 udało mi się utworzyć coś takiego:

CultureInfo culture = new CultureInfo("en-US");
DateTime date = DateTime.ParseExact(message.Date, "ddd, dd MMM yyyy HH':'mm':'ss", culture);

Jednak nadal mam wyjątek o złym formacie. Mogę Was prosić o pomoc?

EDIT:
Udało mi się: ddd, dd MMM yyyy HH:mm:ss KKKKK

jednak teraz problem leży po innej stronie. Różne maile mają różny format zapisu daty. W jaki sposób "wykryć ten właściwy"? Bez sensu pisać funkcję przez pół dnia jeżeli już coś takiego powstało. Możecie naprowadzić?

0

@szydlak: To rozwiązuje problem, jeżeli chcę sam wykrywać rodzaj formatu daty. Nie ma gotowego rozwiązania? Bo to od cholery roboty. Jeżeli nie ma to się biorę do pisania ale jeżeli jest iskierka nadziei... ;)

0

a nie lepiej tak

DateTime.TryParse(message.Date, out var date);
1

@Kubuś Puchatek: ale autor chyba chce mieć datę sparsowaną, a nie zignorowaną.
@Grzegorz Świdwa: Twój format string ignoruje informacje o strefie czasowej, prawidłowy powinien wyglądać tak: "ddd, dd MMM yyyy HH':'mm':'ss K". No i powinieneś użyć DateTimeOffset, a nie DateTime.

0

@somekind: jak to możliwe, że metoda DateTimeOffset.Parse(string).DateTime.ToString() rozpoznaje mi każdy rodzaj formatowania i nie rzuca wyjątku, a DateTime.Parse(string).ToString() już nie?

0

Pokaż jakiś przykład, bo nie bardzo rozumiem w czym rzecz. DateTimeOffset jest mądrzejszy o tyle, że rozumie dane o strefach czasowych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1