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

Parsowanie string do DateTime - jakiego formatu użyć?
Grzegorz Świdwa
Grzegorz Świdwa
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:385
0

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

Kopiuj
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:

Kopiuj
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ć?

edytowany 1x, ostatnio: Grzegorz Świdwa
SZ
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 4 godziny
  • Postów:1494
1
edytowany 1x, ostatnio: szydlak
Grzegorz Świdwa
Grzegorz Świdwa
Edytorem rejestru? Możesz zbliżyć bo póki co mam to za fake answer
SZ
Ciekawe skojarzenie z tym edytorem rejestru :)
Grzegorz Świdwa
Grzegorz Świdwa
o kurde, naprawdę miałem to za niemiły żart haha :D Już patrzę :)
Grzegorz Świdwa
Grzegorz Świdwa
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:385
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... ;)

Kubuś Puchatek
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 miesięcy
  • Postów:235
0

a nie lepiej tak

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

Lubię miodek :)
edytowany 1x, ostatnio: Kubuś Puchatek
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:dzień
  • Lokalizacja:Wrocław
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.

edytowany 1x, ostatnio: somekind
Grzegorz Świdwa
Grzegorz Świdwa
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:385
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?

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:dzień
  • Lokalizacja:Wrocław
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.