2012-11-06 12 views
10

Próbuję przekonwertować ciąg datetimeKonwersja String na DateTime w formacie US

C# Brytanii i I zostały z wykorzystaniem

DateTime convertedDate = DateTime.Parse(lastModificationDate); 

przekonwertować datę

mój problem jest, czasami data będzie w formacie brytyjskim, a czasami w formacie amerykańskim:

tj. UK 11/09/2011 10:34 US 2/28/2010 13:56

Jak obsługiwać oba formaty, gdy nie mam pewności, w jakim formacie będzie łańcuch znaków, np. My lub uk?

+0

jest to niemożliwe bez pewnego wskazaniem, czy jest to USA lub Wielkiej Brytanii, jak można mieć 2 identyczne ciągi o różnych znaczeniach. Czy nie ma dostępnej wersji UTC Twojej daty? –

+1

@JustinHarvey: Co rozumiesz przez "wersję UTC"? UTC nie jest formatem. Obie te wartości mogą być w UTC, w różnych formatach. –

Odpowiedz

17

Zasadniczo nie możesz. Nie masz wystarczającej ilości danych. Jako ludzki, która data jest tutaj uwzględniona?

11/09/2011 10:34 

Czy to 11 września lub 9 listopada?

Jeśli nie możesz stwierdzić różnicy jako ludzka, nie ma szans, aby komputer to zrobił.

Teraz, jeśli możesz uzyskać sygnał z innego źródła w tym samym źródle danych, to jest początek - na przykład możesz heurystycznie spróbować przeanalizować wszystkie daty w formacie amerykańskim i wszystkie daty w formacie brytyjskim, a jeśli 100% przepustek w formacie brytyjskim, ale 60% nie udaje się w formacie amerykańskim (ze względu na próbę analizowania dni jako nieważnych miesięcy), możesz więc rozsądnie założyć, że są datami w Wielkiej Brytanii.

To nigdy nie będzie kompletne rozwiązanie - ponieważ możesz mieć jedno źródło danych z wieloma datami, które są ważne (ale z różnymi znaczeniami) w obu formatach, które są ważne: wszystkie.

+0

+1 do cięcia długiej historii krótkim i prostym. – Adil

+0

ok dzięki za pomoc – simon1230756

1

Powinieneś przechowywać czasy dat w bazie danych w standardowym formacie, zwykle UTC, właśnie z tego powodu.

Następnie można analizować do użytkowników czasu lokalnego Data od UTC użyciu javascript itp

+0

UTC nie jest formatem, jest strefą czasową (efektywnie). Ponadto nic nie wskazuje na to, że w ogóle jest tu zainstalowana baza danych. Jeśli wartość * jest * przechowywana w bazie danych, nie powinna być w ogóle przechowywana w formacie ciągu znaków. –