1

我有倒计时插件,它需要一个时间戳并以天/小时/分钟的形式返回一个倒计时......我所有的时间戳都存储在 UTC timezone 中。

所以这在我改变我的网站时区之前工作正常。

我必须不时更改我的时区......所以现在我得到的所有倒计时都是错误的。

这就是我的插件的基本工作方式

time_left_ms = given timestamp - currentstime stamp / 1000 ;

例如

var time_left = Math.floor((options.timestamp - (new Date())) / 1000);

所以我想我可以像这样使用UTC时间戳来修复它

var d = new Date();
var utc =Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds());

left = Math.floor((options.timestamp - (utc)) / 1000);

但仍然是同样的错误结果......之后我试过这个看看发生了什么

console.log( d +'####'+utc +'####'+d.getTime());

这是输出

Thu Sep 19 2013 19:10:13 GMT+0330 (Iran Standard Time)##1379605213010##1379605213010

怎么了 ?显然时区在 Asia/Thran ...但是为什么我得到 Asia/tehran 和 UTC 的相同时间戳?... 两者都是1379605213010

4

2 回答 2

1

日期指定为自 1970 年 1 月 1 日 UTC 以来的毫秒数:

Date 对象包含一个数字,该数字指示特定的瞬间,精确到毫秒。这样的数字称为时间值。(...)

自 1970 年 1 月 1 日 UTC 以来,时间在 ECMAScript 中以毫秒为单位进行测量。

Date.prototype.getTime 返回此内部时间值

于 2013-09-20T03:10:14.107 回答
0

这返回 UTC

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC

这将返回 UTC

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime

应该是一样的

我认为时区没有时间的数字表示,它始终是 UTC

var x = new Date();
x.getTime();   //1379646809459
x.valueOf();   //1379646809459
于 2013-09-20T03:08:15.690 回答