JavaScript转换的FILETIME是一天假

时间:2018-10-31 18:42:41

标签: javascript filetime

我一直在阅读有关日期的JavaScript“不一”的信息,但是我不知道如何在这种情况下实现它。我正在将一些值从Internet Explorer cookie转换为Microsoft FILETIME,但是总是要提前一天,代码是:

function ConvertToFiletime(high, low) {
    var seconds = 1e-7 * (high * Math.pow(2, 32) + low) - 11644473600;
    var date = new Date.UTC(1970,1,1);
    date.setSeconds(date.getSeconds() + seconds);
    return date;
}

这可以很好地完成转换,但是我无法找到处理多余一天的最佳方法,我认为这是由于缺少时区。我需要减去一天的秒数吗?还是有更好的方法。

1 个答案:

答案 0 :(得分:1)

您的错误在这一行:

var date = new Date.UTC(1970,1,1);

Date.UTC(1970, 1, 1)实际上是2月1日,因为月份索引从0开始。您很可能希望Date.UTC(1970, 0, 1)是1月1日。

此外,new Date.UTC()在最新版本的Chrome和IE 11上对我抛出错误。要正确创建日期对象,请使用:

new Date(Date.UTC(1970, 0, 1))