2011-07-29 13 views
7

Po pobraniu przez klienta pliku z naszego serwera za pomocą naszej aplikacji, aplikacja robi ParseExact na ciągu dat, który sprowadza się z serwera w postaci: yyyy/mm/dd HH:mm:ss.DateTime.ParseExact problem z czasem w języku tajskim/buddyjskim

Po wielu nieporozumieniach zauważyłem w niektórych dziennikach, że data w systemie klientów to 19/7/2554. Jak się okazuje, jest to ważny czas, tak jak w Tajlandii, system Windows domyślnie stosuje system czasów buddyjskich, gdzie jest rok 2554.

Mój parse jest dokładny z niezmienną kulturą, która, jak podejrzewam, może być problemem , ale pomyślałem, że kultura odnosi się do formatu, który próbowaliście przeanalizować?

Komunikat wyjątek pojawia się: Ciąg nie został rozpoznany jako prawidłowy DateTime ponieważ dzień tygodnia był nieprawidłowy

+0

Twój format nie obejmuje w ogóle dnia tygodnia. Czy możesz podać przykład ciągu, który próbujesz analizować, i kodu, który wykonuje parsowanie? –

+0

Czy podajesz listę formatów? – V4Vendetta

+0

Ach, moi źli, spieprzyłem. Okazało się, że był inny kod, o którym nawet nie wiedziałem. Ciężko było debugować tylko z komunikatem wyjątku z pliku dziennika. Okazuje się, że był to błąd DateTime.Parse, a nie parseexact. Udało mi się zreplikować problem, zmieniając region mojego komputera na Tajlandię i dokładnie tam, gdzie umierał. –

Odpowiedz

1

CultureInfo zawiera również informacje kalendarza. Jeśli metoda TryParseExact ma dostęp do poprawnych informacji z kalendarza, będzie mogła poprawnie przeanalizować datę.

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.calendar.aspx

Jeśli zastąpić InvariantCulture CultureInfo z Thai CultureInfo następnie zostanie użyty domyślny kalendarz dla tej kultury.

Alternatywnie można użyć przeciążenia metody TryParse, która nie wymaga informacji CultureInfo. Kultura używana w tym przypadku będzie zależna od regionalnych ustawień użytkownika w systemie Windows.