我们有一个每天在太平洋标准时间凌晨 1 点运行的系统脚本。我们在世界各地都有用户。我们希望提供一个简单的网页,该网页使用 JavaScript 在用户的本地时区显示 1 AM PST。例如,纽约市的用户应该看到太平洋标准时间凌晨 4 点作为系统脚本运行的时间。
PST 时间格式为 HH:MM DD.YYYY。
这只需要在移动 Safari 上工作。
最好的方法是什么?
我们有一个每天在太平洋标准时间凌晨 1 点运行的系统脚本。我们在世界各地都有用户。我们希望提供一个简单的网页,该网页使用 JavaScript 在用户的本地时区显示 1 AM PST。例如,纽约市的用户应该看到太平洋标准时间凌晨 4 点作为系统脚本运行的时间。
PST 时间格式为 HH:MM DD.YYYY。
这只需要在移动 Safari 上工作。
最好的方法是什么?
代码将是这样的:
alert(new Date(your_pst_server_time).toLocaleString());
您可以使用对象的.getUTCHours()
和.getTimezoneOffset()
方法new Date()
。为了便于使用,我将这个新功能附加到该对象上。它将接受一个参数,该参数指定返回的时间格式。
Date.prototype.getLocalTime = function (format){
var date = new Date();
var finalTime = ((date.getUTCHours()-2))-(((date.getTimezoneOffset())/60));
if (format+'' != '24'){
if (finalTime < 0){ finalTime = finalTime + 24 }
}
else {
if (finalTime > 12){ finalTime = (finalTime - 12)+" PM" }
else { finalTime += " AM" }
}
return finalTime.toString();
}
使用我的 CET 时区,调用new Date().getLocalTime('24')
将返回"10"
并且调用new Date().getLocalTime()
(不带参数或不带参数"24"
)将返回"10 AM"
。
这个函数是一个合理的第一次开始,但不适用于印度等时间偏移为 x.5 小时(x 小时 + 30 分钟)的国家。不幸的是,你不能像那样除以 60。