如何在jQuery中获取本地时间?

时间:2009-03-19 03:06:14

标签: javascript jquery plugins time

我正在使用jQuery,我需要获得德国当地时间。

任何从任何国家访问我网站的人都应该知道它在德国的时间。

如果时间在0:00到12:00之间,我需要提醒:“早上好”。

如果时间是在12:00到17:00之间,我需要提醒一下:“下午好”。

我如何在jQuery中实现它?

3 个答案:

答案 0 :(得分:24)

您可以获取客户端的本地时区偏移量以获取GMT时间,然后添加德国时区的偏移小时数(中欧时间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);
      }
    })
});

我们现在利用JSONPjsontime服务器发出跨域请求,此服务器公开了一个完整的JSON API来查询时间和时区信息。

您可以使用代码here来探索JSONP API here

Hurray !,没有服务器端代码!

答案 1 :(得分:6)

您想在德国或者用户时区的时间,无论他们在哪里?如果是后者,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.");
}

答案 2 :(得分:4)

您需要将Web服务器上的日期/时间注入页面上的隐藏字段,然后您可以使用jQuery访问它并加载自然的Javascript Date对象。您想要依赖客户端日期/时间,因为它不受您的控制,可能会被设置为令人发指的东西。相信我。