2012-04-26 13 views
6

jest coś, czego nie mogę zrozumieć z DateTime.ToOaDate().wydanie z DateTime.ToOADate()

oto co mam

var plainDate = "01/07/2011"; 
var dateTime1 = DateTime.Parse(plainDate, new CultureInfo("en-GB")); 
var value = dateTime1.ToOADate(); 
var dateTime2 = DateTime.Parse(DateTime.FromOADate(value).ToString(), new CultureInfo("en-GB")); 

dateTime1 i datetime2 powinny być takie same, prawda? zamieniłem tylko zwykłą datę w kleszcze, a następnie odzyskałem ją jako DateTime z tą samą kulturą ,, ale tak naprawdę, kiedy go uruchomiłem dateTime2 ma wartość (7-Jan-2011) zamiast (1 lipca 2011)

+1

Nie ma to nic wspólnego z 'ToOADate()'. Usuń wiersz 'value' i po prostu użyj' DateTime.Parse (dateTime1.ToString(), new CultureInfo (...)) 'a zobaczysz dokładnie taki sam efekt. To konwersje łańcuchowe powodują problem, a nie 'ToOADate' i' FromOADate' ... –

Odpowiedz

5

Myślę, że to dlatego, że twoje wezwanie do ToString nie określa informacji o kulturze.

Wypróbuj także .

+0

tak, teraz jest identyczny .. wiele thanx :) –

5

Kiedy robisz DateTime.Parse, jesteś określenie formatu można oczekiwać data przychodzące być w.

Kiedy robisz ToString(), jesteś określający, że obecna kultura powinna być użyty do wyświetlania daty.

Tutaj, domyślam się, że Twój Thread.CurrentThread.CurrentCulture.DateTimeFormat zwraca format US. W związku z tym zwraca 07/01/2011, po przeanalizowaniu tego przy użyciu en-GB, zwraca 7 stycznia.