2015-06-10 2 views
2

При тестировании в консоли Firefox Javascript,Почему Javascript Date.now() возвращает неверную дату?

Date.now();

возвращает 1433959098918.

погуглить "1433959098918 мс в годы" возвращает 45.4404 года, который добавил к 1 января 1970 00:00:00 в мае восьмой, 2015. Я также попытался

(new Date()).getTime();

, который возвращает тот же результат. Я что-то просчитываю, а если нет, то почему Date.now() возвращает этот результат?

EDIT: Nevermind, мои расчеты были неверными. Я предположил, что даты основаны на 0, а они нет.

+0

Ваше недоразумение, 1433959098918 = ср, 10 июн 2015 17:58:18 GMT, так что здесь, кажется, нет проблем –

+0

_ «Я что-то просчитываю». Ну, да. Поскольку .4404 лет - 160 дней, теперь вы можете сосчитать – bugwheels94

ответ

1

Сейчас:

(new Date()).getTime() 

дает мне:

1433959813432 (or 45,4 years) 

Что является правильным. Вы сделали ошибку в вычислении:

1433959813432 [ms]/60 [s/m]/60 [m/h]/24 [h/d]/365.25 [d/y] 
= 45.439444489821786194133901183867 [y] 

Вы должны рассчитывать 365,25 дней в году, чтобы включить leapyears.

Это НЕ СОВЕРШЕННО, но это хорошее приближение.

Добавить 1970 года, и вы получите:

2015.4394444898217861941339011839 

который является 2015 год, плюс остальное, что:

0.4394444898217861941339011839 [y] * 365.25 [d/y] 

Или:

160.50709990740740740740740740742 days 

Теперь, вычесть 31 день за январь, 28 февраля, 31 марта, 30 для апреля и 31 за май и вас get:

9.5070999074074074074074074074218 days into june 

Какой 10-й день июня 2015 года (отсчет от 0).

Остальное:

0.5070999074074074074074074074218 * 24 hours 
= 12.170397777777777777777777778123 hours 

Плюс мой часовой пояс и DST, и это только на месте!

+0

Я тоже нахожу это: var now = + (new Date()); – Roberto

6

Поскольку JS метка времени не Отметка времени Unix, метка времени Unix в секундах не в миллисекундах вам нужно деленное на 1000, вы можете удалить последние 3 цифры

1433959098918 -> 1433959098

Это разные формат имеет много проблем, если вы этого не знаете.:)

+1

Ссылка: [Преобразование временного интервала Unix в Javascript] (http://stackoverflow.com/questions/847185/convert-a-unix-timestamp-to-time-in-javascript) – Roberto

+0

Что нужно сделать timestamp unix с вопросом – bugwheels94

+0

потому что 1433959098918 в unix timestamp Thu, 10 мая 47410 19:55:18 GMT это вопрос. –

Смежные вопросы