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

ven*_*lam 13 javascript time jquery plugins

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

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

如果时间是在0:00到12:00之间,我需要提醒:"早上好".

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

我怎样才能在jQuery中实现它?

CMS*_*CMS 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.");
}
Run Code Online (Sandbox Code Playgroud)

更新:我同意@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);
      }
    })
});
Run Code Online (Sandbox Code Playgroud)

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

您可以在这里使用代码,您可以在这里探索JSONP API .

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

  • 你不认为这对于用来显示问候语的东西有点多吗?你知道,它不是导弹发射控制应用程序. (8认同)
  • 对不起,我的朋友,你的泡沫破裂,但这完全不可靠.这取决于客户端系统时钟,可以设置为完全令人愤慨的东西.使用客户端时钟过去对我来说完全搞砸了应用程序.必须将服务器端日期/时间注入隐藏字段! (3认同)
  • @nickf:是的,可能是,我只是为了好玩而做了!并且用jQuery做了一些事情,因为OP问道:D ...... (3认同)
  • 嗨CMS; 你提供很好的解决方案 昨天我已经在我的应用程序中实现了它,它工作得很完美.但是当我今天测试的时候,当我点击这个URL时,我遇到了问题,Google App Requests over .... http://json-time.appspot.com/time.json?tz现在关注的是,这不是可靠的服务.你有什么建议的?或者我可以获得该服务的源代码,然后我可以将其上传到我的服务器并使用来自我的服务器的服务,而不是依赖于另一台服务器.谢谢你的时间.请指教.... (2认同)

nic*_*ckf 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.");
}
Run Code Online (Sandbox Code Playgroud)