2010-02-19 4 views
4

На моем сайте единственное место, где я использую время, - это когда я вставляю в БД. Когда я вытаскиваю его, я хотел бы отображать время в соответствии с часовым поясом пользователя. Я создаю эту часть страницы в C# (она работает в ASP.NET, но не использует файлы кода .aspx).Как отображать время в часовом поясе пользователя?

Как отображать время в соответствии с часовым поясом пользователя? У меня такое чувство, что мне нужно, чтобы пользователь вводил свое местоположение, прежде чем я смогу это сделать? Каков наилучший способ получить время от места и сэкономить дневной свет? или обмануть, переведя UTC на его через JS и jquery?

+0

Как лучше всего сохранить/вернуть часовой пояс: http://stackoverflow.com/questions/11975/handling-timezones-in-storage – CAbbott

ответ

6

Вы можете использовать объект Date Javascript для его получения. Date.getTimezoneOffset() даст вам разницу в минутах между локальными и UTC-представлениями даты. Фактическое значение выводится в конечном счете из системных часов, которые, если они будут установлены правильно, будут знать, в каком часовом поясе он находится.

+0

Предполагается, что пользователь выбрал правильные региональные настройки в операционной системе. –

+0

Точно. Вот хороший учебник, если вы хотите конвертировать локальное время пользователя в другой часовой пояс (или, в вашем случае, значение вашего сервера в часовой пояс пользователя): http://articles.techrepublic.com.com/5100-10878_11-6016329.html – montrealist

+0

@Daniel: Вот почему я добавил, что оговорка в последнем предложении. :) – Robusto

3
  1. Вы можете либо попросить пользователя выбрать часовой пояс, как вы предлагали.

  2. Вы можете использовать (new Date).getTimezoneOffset();, как предложено в Robusto's answer. Это вернет количество минут, чтобы вычесть из локального времени пользователя, чтобы получить UTC. Пользователь должен настроить правильный часовой пояс в операционной системе, чтобы это дало хорошие результаты.

  3. Еще один трюк, чтобы «угадать» пользовательский часовой пояс, выполнив сравнение дат на стороне клиента в JavaScript между new Date(); и меткой времени, сгенерированной сервером.

    Преимущество этого заключается в том, что он будет работать, даже если пользователь не настроил бы правильные региональные настройки в операционной системе. Пока компьютерные часы пользователя точны до +/- 30 минут, он должен быть надежным.

1

Просто передайте время UTC JavaScript-конструктору JavaScript Date(). Результирующий объект Date будет временем в локальном часовом поясе пользователя, основываясь на настройках компьютера.

var gmt = new Date('Feb, 19 2010 13:00:00 GMT'); 
alert(gmt); 

В Chrome, в часовом поясе по стандартному тихоокеанскому времени, это показывает

Fri Feb 19 2010 05:00:00 GMT-0800 (Pacific Standard Time)

Если вам необходимо иметь эту информацию на стороне сервера, не стал спрашивать у пользователя их расположения. Просто спросите их непосредственно о часовом поясе. Многие сайты (особенно форумы) уже делают это.