Parsuję ciąg znaków, aby przekonwertować go na DateTime. Dostaję w niektórych przypadkach błąd:DateTime.Parse: wyjątek podczas zmiany kultury
String was not recognized as a valid DateTime.
ja dostaję ten błąd tylko wtedy uruchomić aplikację z komputera znajdującego się w innym kraju niż USA. To, co widzę w ciągu znaków, to 09/20/2010 14:11
iw tym przypadku otrzymuję wyjątek. Jeśli mam wartość taką jak: 10/05/2010 12:54
Nie otrzymuję wyjątku. Przypuszczam, że to jest dzień, w którym jest 20, a ten komputer jest w Europie, więc uważa, że 20 to miesiąc. Problemem jest to, że zmuszają go do być en-US:
CompletedDttm = DateTime.ParseExact(value, "MM/dd/yyyy hh:mm", new CultureInfo("en-US"));
Ponieważ otrzymuję wyjątek Przypuszczam pewien, że to jest właściwe podejście.
Każdy pomysł, jak parsować ciąg znaków w sposób, który działa bez względu na kulturę, z której korzystam na komputerze?
Jeśli wiesz, że format zawsze będzie taki, możesz użyć DateTime.Parse (value, CultureInfo.InvariantCulture); Pod względem daty i czasu InvariantCulture jest mniej więcej równoznaczne z en-US. BTW, jeśli parsujesz to w ten sposób, .Net nie będzie w stanie określić strefy czasowej i faktycznie potraktuje twój DateTime jako "nieokreślony lokalny", co może prowadzić do błędów. Jeśli wiesz, że źródło znajduje się w UTC, użyj tego: DateTime.Parse (value, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal); –