Как я могу получить местное время в JQuery? - PullRequest
13 голосов
/ 19 марта 2009

Я использую jQuery и мне нужно узнать местное время для Германии.

Любой, кто приходит на мой сайт из любой страны, должен знать, который час в Германии.

Если время между 0:00 и 12:00, мне нужно сделать предупреждение: «Доброе утро».

Если время между 12:00 и 17:00, мне нужно сделать предупреждение: «Добрый день».

Как я могу реализовать это в jQuery?

Ответы [ 3 ]

24 голосов
/ 19 марта 2009

Вы можете получить локальное смещение часового пояса клиента, чтобы получить время по Гринвичу, а затем добавить часы смещения часового пояса Германии (центральноевропейское время по Гринвичу + 1):

function getDate(offset){
  var now = new Date();
  var hour = 60*60*1000;
  var min = 60*1000;
  return new Date(now.getTime() + (now.getTimezoneOffset() * min) + (offset * hour));
}

//...

var dateCET = getDate(1); // Central European Time is GMT +1

if (dateCET.getHours() < 12) {
    alert ("Good morning.");
} else {
    alert ("Good afternoon.");
}

Обновление: Я согласен с @Josh, приведенный выше код полностью зависит от клиента. Давайте попробуем сделать это лучше:

$(document).ready(function(){
  var timezone = "Europe/Berlin";
  $.getJSON("http://json-time.appspot.com/time.json?tz="+timezone+"&callback=?",
    function(data){
      if (data.hour < 12) {
        alert ("Good morning in "+timezone);
      } else {
        alert ("Good afternoon in "+timezone);
      }
    })
});

Теперь мы используем JSONP для выполнения междоменных запросов к серверу jsontime , этот сервер предоставляет полный JSON API для запроса времени и информации о часовом поясе.

Вы можете поиграть с кодом здесь и изучить JSONP API здесь .

Ура !, нет серверного кода!

6 голосов
/ 19 марта 2009

Хотите узнать время в Германии или время для часового пояса пользователя, где бы он ни находился? Если последнее, функция Date() по умолчанию работает в местном часовом поясе.

var d = new Date();    // defaults to the current time in the current timezone
if (d.getHours() < 12) {
    alert ("Good morning.");
} else {
    alert ("Good afternoon.");
}
4 голосов
/ 31 марта 2009

Вам необходимо вставить дату / время с вашего веб-сервера в скрытое поле на странице, а затем получить к нему доступ с помощью jQuery и загрузить естественный Javascript Date объект. Вы не хотите полагаться на дату / время на стороне клиента, потому что они находятся вне вашего контроля и могут быть установлены на что-то возмутительное. Поверь мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...