Dlaczego nie można analizować „9/1/2009” przy użyciu „M / d / rrrr” w DateTime.ParseExact ()

Mam ciąg, który wygląda tak: „9/1/2009”. Chcę przekonwertować go na obiekt DateTime (za pomocą C #).

To działa:

DateTime.Parse("9/1/2009", new CultureInfo("en-US"));

Ale nie rozumiem, dlaczego to nie działa:

DateTime.ParseExact("9/1/2009", "M/d/yyyy", null);

W dacie nie ma słowa (np. „Wrzesień”) i znam konkretny format, więc wolę używać ParseExact (i nie widzę powodu, dla którego CultureInfo będzie potrzebne). Ale wciąż otrzymuję przerażający „Łańcuch nie został rozpoznany jako prawidłowy wyjątek DateTime”.

Dzięki

Trochę kontynuacji. Oto 3 podejścia, które działają:

DateTime.ParseExact("9/1/2009", "M'/'d'/'yyyy", null);
DateTime.ParseExact("9/1/2009", "M/d/yyyy", CultureInfo.InvariantCulture);
DateTime.Parse("9/1/2009", new CultureInfo("en-US"));

A oto 3, które nie działają:

DateTime.ParseExact("9/1/2009", "M/d/yyyy", CultureInfo.CurrentCulture);
DateTime.ParseExact("9/1/2009", "M/d/yyyy", new CultureInfo("en-US"));
DateTime.ParseExact("9/1/2009", "M/d/yyyy", null);

Zatem Parse () działa z „en-US”, ale nie ParseExact… Nieoczekiwany?

questionAnswers(7)

yourAnswerToTheQuestion