Преобразование JavaScript FILETIME - один выходной
Я читал о 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 ответ
Ваша ошибка в этой строке:
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))