Я заметил эту странную проблему относительно .ToUniversalTime(), но я не могу понять, почему..ToUniversalTime(), почему он работает таким образом?
Если я
DateTime currentServerTime = System.DateTime.Now;
DateTime currentUTCServerTime = currentServerTime.ToUniversalTime();
log.Debug("Current server time :" + currentServerTime);
log.Debug("Current Server UTC Time is :" + currentUTCServerTime);
Результат
Current server time :2/18/2014 2:09:23 PM
Current Server UTC Time is :2/18/2014 7:09:23 PM
5 часов.
Учитывая, что сервер расположен на восточном побережье США, с -5 смещением. Правильно.
Теперь, если я
String dateTimeString = "7/10/2013";
DateTime baseLined = Convert.ToDateTime(dateTimeString);
DateTime convertedUTCTime = baseLined.ToUniversalTime();
log.Debug(dateTimeString + " is :"+baseLined);
log.Debug(dateTimeString + " UTC time is :" + convertedUTCTime);
Результат
7/10/2013 is : 7/10/2013 12:00:00 AM
7/10/2013 UTC time is: 7/10/2013 4:00:00 AM
4 часов.
Почему один результат показывает разницу в 5 часов, а другая показывает 4 ????
Пожалуйста, помогите.
=== ==== Редактировать
Благодаря Джону и Usr. Теперь я понимаю. ToUniversalTime() будет учитывать DST сервера и настраивать UTC в соответствии с объектом DateTime, к которому он привязан.
Так что я все еще пытаюсь обвести вокруг себя эту ситуацию.
В моей базе данных, 7/10/2013 - это срок и был записан как «7/10/2013 4:00:00 AM» (так как в это время это было во время летнего времени, смещение -4) ,
Теперь, в феврале 2014 года, DST не действует, теперь смещение -5. Но из-за этого, когда я настраиваю смещение часового пояса пользователя -5 до «7/10/2013 4:00:00 AM», он становится 7/09/2013 вместо 7/10/2013.
Как справиться с этой ситуацией?
«Учитывая, что сервер расположен на восточном побережье США, с -5 смещением. Это правильно». - Как вы думаете, что смещение на 10 июля? –
@ Джон, ничего себе, ладно. Это многое объясняет. Итак, что означает, что ToUniversalTime() также учитывает смещение на летнее время сервера? Я этого не знал! – Liming
Да, он преобразует местное время в универсальное время. Это было бы бесполезно, если бы он не наблюдал DST, если честно. –