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

IT技术 javascript jquery plugins time
2021-02-26 06:38:49

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

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

如果时间在 0:00 到 12:00 之间,我需要发出警报:“早上好”。

如果时间在 12:00 和 17:00 之间,我需要提醒阅读:“下午好”。

我如何在 jQuery 中实现它?

3个回答

可以通过客户端的本地时区偏移量得到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 来查询时间和时区信息。

您可以在此处使用代码,也可以在此处探索 JSONP API

万岁!没有服务器端代码!

抱歉打破了你的泡沫,我的朋友,但这完全不可靠。这取决于客户端系统时钟,它可能被设置为完全离谱的东西。过去,使用客户端时钟对我来说完全搞砸了应用程序。必须将服务器端日期/时间注入隐藏字段!
2021-05-11 06:38:49
嗨 CMS;你提供了很好的解决方案。昨天我已经在我的应用程序中实现了这个,它工作得很好。但是当我今天测试时,我在点击这个 URL 时遇到了问题,Google App Requests over.... json-time.appspot.com/time.json?tz 现在我担心的是,这不是可靠的服务。你有什么建议?或者我可以获取该服务的源代码,然后我可以将它上传到我的服务器并使用我服务器上的服务,而不是我依赖另一台服务器。谢谢你的时间。请指教....
2021-05-11 06:38:49
@nickf:是的,可能是,我只是为了好玩!,并用 jQuery 做一些事情,正如 OP 所要求的那样:D ...
2021-05-12 06:38:49
你不认为这对于只是用来表示问候的东西来说有点多吗?你知道,它不是导弹发射控制应用程序。
2021-05-14 06:38:49

您想获取德国的时间,还是用户所在时区的时间,无论他们身在何处?如果是后者,该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.");
}

您需要将来自 Web 服务器的日期/时间注入页面上的隐藏字段,然后您可以使用 jQuery 访问它并加载自然的Javascript Date对象。希望依赖于客户端的日期/时间,因为它是你的控制并可以设置的东西离谱。相信我。

@nickf 用于现实?隐藏领域不是火箭科学。
2021-04-23 06:38:49
nickf:100% 保证所有用户都会有类似的体验,这既不荒谬也不夸张。在我的世界里,这绝对是强制性的。
2021-05-07 06:38:49
好的,鉴于 OP 中所述的情况,即它被用于简单的“早安/晚安”问候,这是荒谬的和过分的。
2021-05-13 06:38:49