我有一个 javascript 倒数计时器,它通过获取指定的日期和时间并将其与当前日期和时间进行比较来工作。问题是,当前时间是相对于用户时区的,所以用户之间的剩余时间是不同的。
我怎样才能让计时器倒计时到特定时区的时间,在我的情况下格林威治标准时间 -5 小时?
我知道我可以使用下面的代码来获取用户时区,但我不知道如何使用它。
myDateObj.getTimezoneOffset() / 60
我有一个 javascript 倒数计时器,它通过获取指定的日期和时间并将其与当前日期和时间进行比较来工作。问题是,当前时间是相对于用户时区的,所以用户之间的剩余时间是不同的。
我怎样才能让计时器倒计时到特定时区的时间,在我的情况下格林威治标准时间 -5 小时?
我知道我可以使用下面的代码来获取用户时区,但我不知道如何使用它。
myDateObj.getTimezoneOffset() / 60
快速搜索显示:convert-the-local-time-to-another-time-zone-with-this-javascript
按照文章逐字逐句为您提供这个示例:
var d = new Date();
var localTime = d.getTime();
var localOffset = d.getTimezoneOffset() * 60000;
var utc = localTime + localOffset;
// obtain and add destination's UTC time offset
// for example, Bombay
// which is UTC + 5.5 hours
var offset = 5.5;
var bombay = utc + (3600000*offset);
var nd = new Date(bombay);
alert("Bombay time is " + nd.toLocaleString() + "<br>");
jsFiddle:http : //jsfiddle.net/GEpaH/
只需更新您想要的偏移量,您就应该准备就绪。
您可以使用 Date.UTC(year,month,day,hours,minutes,seconds,msec)
它的操作就像 Date 构造函数,但返回格林威治时间 (offset=0) 而不是本地时间的参数时间戳。
var localtime=new Date(Date.UTC(year,month,day,hours,minutes,seconds,msec))
返回指定 UTC 时间的本地时间。
每个人(时钟设置正确)将一起结束倒计时。
只需创建一个带有时区的RFC 2822 时间戳的日期。然后该时间将转换为用户当前位置(基于操作系统设置)。即使对夏令时进行更正!
我在挪威,目前处于夏令时,所以现在是 GMT+2。以下是我使用 GMT-0500 创建 Date 对象时发生的情况:
var myDateObj = new Date("Fri Apr 17 2015 12:00:00 GMT-0500 (CDT)");
myDateObj.toString();
2015 年 4 月 17 日星期五 19:00:00 GMT+0200 (CEST)
如何获取您所在位置的正确日期字符串?如果是您当前所在的时区;只需myDateObj.toString()在您的浏览器开发工具控制台中进行即可。对于不同的时区;首先更改操作系统中的时区。(或阅读 RFC)
new Date().toString();
2015 年 4 月 17 日星期五 12:36:57 GMT+0200 (CEST)
你并没有真正说出你想要实现的目标。javascript 日期对象检索本地时间和“时区偏移量”(相对于 GMT (UTC))。这些当然是由用户“设置”的,所以即使在同一时区,两个用户也不太可能有相同的“时间”。
如果您尝试在不同用户之间计时,则需要参考一些集中的时间权限。
我将使用 AJAX 类型调用 (XMLHttpRequest) 来访问拥有我自己的服务器的页面,该服务器返回我的服务器时间。这样每个用户都在引用相同的时间。
使用 Google XMLHttpRequest 查找您需要的 JS 代码示例(通常是此类简单服务的相应服务器端代码)。
PS:我还会安装一些简单的客户端软件,通过每 10 分钟与原子钟同步一次来保持服务器上的时间准确。
您无法使用 JavaScript 获得准确的日期,因为它是客户端并且基于用户的操作系统时钟。您可以使用jCounter根据服务器端时区显示倒计时。
但是,嘿,如果你真的想自己做,下载 jCounter,你会发现一个 dateandtime.php 文件,它检索服务器端的当前日期,作为时间戳(顺便说一句,它必须放在服务器上,而不是在你的桌面上 :P)
检查该脚本如何使用该文件并检索实际当前日期以对其进行操作并计算准确的倒计时。
干杯