21

new Date()2つのタイムスタンプを使用する場合とnew Date().getTime()減算する場合の違いは何ですか?(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);

私がお互いを好むべき理由はありますか?

4

3 に答える 3

61

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

于 2013-03-14T04:31:43.303 に答える
4

新しい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

于 2013-03-14T04:31:51.607 に答える
4

日付演算は、日付をエポック時間(1970年1月1日からのミリ秒)に変換します。これが、機能的に2つのコードスニペットが同じである理由です。

どちらが速いかについては、JamundFergusonの答えが正しいです。

于 2013-03-14T04:42:54.873 に答える