Datetime.Now неправильно определяет мое местоположение - PullRequest
0 голосов
/ 03 сентября 2010

У меня есть веб-сайт, который отображает текущую дату, используя код Datetime.Now. Насколько я понимаю, Datetime.Now должен отображать текущее время так, как оно будет отображаться в текущей локали просмотра.

В данный момент, когда я тестирую на localhost, веб-сайт правильно определяет мое местоположение (en-nz) и отображает правильную дату. Однако, когда я запускаю сайт вживую, я получаю другую дату все вместе.

Итак, как система определяет языковой стандарт зрителя и почему существует разница между отображением на моем сайте Datetime.Now локально и в режиме реального времени?

Ответы [ 3 ]

7 голосов
/ 03 сентября 2010

DateTime.Now имеет время сервера, но не время клиента.Если вы хотите определить время клиента, вам нужно использовать Javascript, либо определив время с его помощью, либо рассчитав его с использованием часовых поясов.

На вашем локальном хосте работает нормально, поскольку сервер и клиентв том же ПК / Часовой пояс

Надеюсь, это поможет!

5 голосов
/ 03 сентября 2010

Нет, DateTime.Now будет получать текущее время в местном часовом поясе машины, на которой он работает . Другими словами, веб-сервер в вашем случае, при условии, что вы пишете веб-приложение (вы не сделали этого ясно).

Если вы хотите отобразить его в местном часовом поясе браузера, вам может быть лучше отправить DateTime.UtcNow и написать немного JavaScript, чтобы преобразовать его в местное время ... или просто позволить JavaScript сработать текущее время в системе пользователя.

Насколько я знаю, нет способа получить точный часовой пояс из JavaScript. Вы можете получить текущее смещение от UTC, но это не то же самое, что и сам часовой пояс. (Смещения меняются из-за таких вещей, как DST; знание текущего смещения не говорит вам, когда наступит DST.)

0 голосов
/ 03 сентября 2010

Может быть, машины имеют разные настройки времени?Если разработчики и живые серверы находятся в разных местах, это вполне возможно.Как говорят другие ответы, DateTime.Now получает время сервера, а не время клиента.

...