我正在使用 jQuery,我需要获取德国的当地时间。
从任何国家访问我的网站的任何人都应该能够知道德国的时间。
如果时间在 0:00 到 12:00 之间,我需要发出警报:“早上好”。
如果时间在 12:00 和 17:00 之间,我需要提醒阅读:“下午好”。
我如何在 jQuery 中实现它?
我正在使用 jQuery,我需要获取德国的当地时间。
从任何国家访问我的网站的任何人都应该能够知道德国的时间。
如果时间在 0:00 到 12:00 之间,我需要发出警报:“早上好”。
如果时间在 12:00 和 17:00 之间,我需要提醒阅读:“下午好”。
我如何在 jQuery 中实现它?
可以通过客户端的本地时区偏移量得到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);
}
})
});
我们现在利用JSONP向jsontime服务器做跨域请求,这个服务器公开了一个完整的 JSON API 来查询时间和时区信息。
您可以在此处使用代码,也可以在此处探索 JSONP API 。
万岁!没有服务器端代码!
您想获取德国的时间,还是用户所在时区的时间,无论他们身在何处?如果是后者,该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对象。你不希望依赖于客户端的日期/时间,因为它是你的控制并可以设置的东西离谱。相信我。