Подтвердить что ты не робот

Как получить локальное время в jQuery?

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

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

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

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

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

4b9b3361

Ответ 1

Вы можете получить локальное смещение часового пояса клиента, чтобы получить время по Гринвичу, а затем добавить часы смещения временного времени Германии (Центральноевропейское время GMT + 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, этот сервер предоставляет полный API JSON для запроса информации о времени и часовом поясе.

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

Ура!, не серверный код!

Ответ 2

Вы хотите найти время в Германии или время для часового пояса пользователя, где бы они ни находились? Если последнее, функция 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.");
}

Ответ 3

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