Javascript 如果客户端时间提前或延迟,如何在客户端获得准确的UTC/GMT时间?

Javascript 如果客户端时间提前或延迟,如何在客户端获得准确的UTC/GMT时间?,javascript,datetime,Javascript,Datetime,据我所知, var now = new Date(); var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds()); 它基于客户端时间机器 假设客户机修改了他们的时间,那么这将是一个问题 如果我错了,请纠正我 问题 -如果客户端时间提前或延迟,如何在客户端获得准确的U

据我所知,

var now = new Date(); 
var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(),  now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds());
它基于客户端时间机器

假设客户机修改了他们的时间,那么这将是一个问题

如果我错了,请纠正我

问题
-如果客户端时间提前或延迟,如何在客户端获得准确的UTC/GMT时间?

如果您想要一个独立于用户时钟的解决方案,您必须使用某种web服务。您可以构建自己的(将服务器的时间发送到浏览器)或使用web服务

下面是一个使用timeapi.org的示例,它返回并输出当前时间(以GMT为单位)。您可以修改此代码以将用户的时区作为偏移发送(将URL替换为类似
http://www.timeapi.org/+10/现在
其中+10是偏移量)


函数myCallback(json){
警报(新日期(json.dateString));
}
从中提取。

您可以使用以下功能之一:

var utc = new Date().toISOString(); // 2015-05-26T04:30:09.490Z
或者通过计算

注意,在上面的代码中,getTimezoneOffset()以分钟为单位返回时区。所以,我把它转换成毫秒


总有一个库可以简化对时区的处理。

new Date()。getTimezoneOffset()
将以分钟为单位提供偏移时区。要使时间缩短到小时,请检查此项。如果我已将时间提前,例如+2小时,则此项不起作用。然后,var utc给了我错误的答案。我不确定您所指的两个示例中的哪一个。还有,你说的“我前面的时间”是指“时区”对吗?我指的是同一时区,但要提前几个小时。
var utc = new Date().toISOString(); // 2015-05-26T04:30:09.490Z
var now = new Date();
var utc = new Date(now.getTime() + now.getTimezoneOffset() * (60 * 1000));