2010-09-16 5 views
2

documentation говорит, что ...Работает ли ToLocalTime между часами?

  • Вы можете использовать метод ToLocalTime для восстановления локальной даты и времени значения, которое было преобразовано в UTC метода ToUniversalTime или FromFileTimeUtc.

и продолжает говорить (немедленно)

  • Однако, если исходный время представляет недопустимое время в местном часовом поясе, он не будет соответствовать восстановленному значению.

Означает ли последнее, что он не будет работать, если время «недействительно» (что бы это ни значило?)?

+0

На мой взгляд, вся точка метода, называемая ToLocalTime, заключается в том, что она преобразует время во временные зоны, но вы правы, что документация неоднозначна. Вы пробовали проверить его? Жестко, я не совсем уверен, что вы можете использовать для краевых случаев ... –

ответ

1

Я думаю, что это свидетельствует о том, что это значит для раз недействительными:

DateTime now = DateTime.Now; 
for (DateTime dt = now; dt < now.AddYears(1); dt += TimeSpan.FromMinutes(30)) 
{ 
    DateTime dt2 = dt.ToUniversalTime().ToLocalTime(); // dt2 == dt ? 
    if (dt2 != dt) 
    { 
     Console.WriteLine("Not equal: {0}, {1}", dt, dt2); 
    } 
} 

Результат на моем компьютере (вы можете получить разные результаты):

 
Not equal: 27-03-2011 02:26:28, 27-03-2011 03:26:28 
Not equal: 27-03-2011 02:56:28, 27-03-2011 03:56:28 

Время «27-03- 2011 02:26:28 "недействительно, потому что они не существуют из-за того, что часы двигаются вперед один час, заставляя это время пропустить.

Смежные вопросы