Подтвердить что ты не робот

Date() vs Date(). GetTime()

В чем разница между использованием new Date() и new Date().getTime() при вычитании двух временных меток? (test script на jsFiddle)

Оба значения дают одинаковые результаты:

var prev1 = new Date();
setTimeout(function() {
    var curr1 = new Date();
    var diff1 = curr1 - prev1;
}, 500);

var prev2 = new Date().getTime();
setTimeout(function() {
    var curr2 = new Date().getTime();
    var diff2 = curr2 - prev2;
}, 500);

Есть ли причина, по которой я должен предпочесть один за другим?

4b9b3361

Ответ 1

Я понял, что это не в ваших вопросах, но вы можете рассмотреть Date.now(), который является самым быстрым, потому что вам не нужно создавать экземпляр нового объекта Date, см. следующее для сравнения различных версии: http://jsperf.com/date-now-vs-new-date-gettime/8

Вышеуказанная ссылка показывает, что использование new Date() выполняется быстрее, чем (new Date()).getTime(), но Date.now() быстрее всех.

Поддержка браузера для Date.now() не так уж плоха (IE9 +):

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

Ответ 2

когда вы создаете новый объект Date(), он автоматически инициализируется текущим временем.

Из W3Schools:

new Date() // current date and time
new Date(milliseconds) //milliseconds since 1970/01/01
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)

Функция getTime() просто возвращает это время.

Из W3Schools:

Date.getTime() // method returns the number of milliseconds between midnight of January 1, 1970 and the specified date.

http://www.w3schools.com/jsref/jsref_obj_date.asp

Ответ 3

Арифметика даты преобразует даты в эпоху Epoch (миллисекунды с 1 января 1970 года), поэтому функционально два фрагмента кода одинаковы.

Как и быстрее, ответ Джамунда Фергюсона правильный.