Преобразование JavaScript FILETIME - один выходной - PullRequest
0 голосов
/ 31 октября 2018

Я читал о JavaScript «off-by-one» для дат, но я не могу понять, как реализовать его в этой ситуации. Я конвертирую некоторые значения из файла cookie Internet Explorer в 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 голосов
/ 01 ноября 2018

Ваша ошибка в этой строке:

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

Date.UTC(1970, 1, 1) на самом деле 1 февраля, потому что индексирование месяца начинается с 0. Скорее всего, вы хотите Date.UTC(1970, 0, 1), что 1 января.

Кроме того, new Date.UTC() выдает ошибку для меня в последней версии Chrome и IE 11. Чтобы правильно создать объект даты, используйте:

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