との主な違いは何です:Date.parse()と.getTime(の違い)
dt = new Date();
ms = Date.parse(dt);
と
dt = new Date();
ms = dt.getTime();
彼らは同じ出力を持っていますが、どのような違いは?どちらを使うべきですか?
との主な違いは何です:Date.parse()と.getTime(の違い)
dt = new Date();
ms = Date.parse(dt);
と
dt = new Date();
ms = dt.getTime();
彼らは同じ出力を持っていますが、どのような違いは?どちらを使うべきですか?
最初のバージョンではDate
が文字列に変換されて解析されますが、これは非常に意味のないことです。情報が失われる可能性もあります。 (DSTの遷移中にクロックが戻ったときに、同じローカルタイムがその時間に2回発生していることを想像してください。
2番目はかなりです私の考えではクリーナー。一般的には、文字列変換が必要ないときは避けるべきです。問題につながることが多く、何をしようとしているのかは、本来は文字列表現のです。
ms = new Date().getTime()
またはより良いを、静的now()
メソッドを使用します:
ms = Date.now()
解析関数は、その引数へのToString演算子を適用し、日付として得られた文字列を解釈します。日付に対応するUTC時刻の値を返します。文字列は、文字列の内容に応じて、ローカル時間、UTC時間、または他のいくつかの時間帯の時間として解釈されます。
世界時に基づき、指定された日時の時間に対応する数値を返します。
パフォーマンスは大きなだろうが
あなたが実際にがDate
他の場所で必要な場合を除き、それを使用する方が簡単だろう差。どちらの場合も、Date instanceを割り当てます。最初の例では、Stringが必要なparse()に日付インスタンスを渡します。 JavaScriptエンジンは、DateのtoString()を呼び出し、日付の文字列も割り当てます。基本的に、それは同じである。第二の例で
dt = new Date(); // allocate a Date
dateString = dt.toString(); // allocate a String
ms = Date.parse(dateString); // Total: 2 allocations
、あなたは文字列の割り当てを排除しますDateインスタンス上getTime()メソッドを呼び出しています。すべての割り当てを排除する
dt = new Date(); // allocate a Date
ms = dt.getTime(); // Total: 1 allocation
別のオプションはDate.now()を呼び出すために、次のようになります。
ms = Date.now(); // Total: 0 allocations
これは、直接他のオブジェクトを構築することなく、ミリ秒の時間を返します。
古い投稿ですが、私より後でここを訪れる人には私の答えを残します。
dt = new Date();
// often false, occasionally true
Date.parse(dt) === dt.getTime()
あなたが内部的にDate.parse(dt)
によって呼び出されdt.toString()
を行うときは、ミリに関する情報を失うことになるからです。少なくともChrome(63.0.3239.84)とFirfox Quantum(57.0.3)では、このようにDateオブジェクトのtoString()
メソッドを実装しています。次の例を自分で試すことができます。
dt = new Date('2018.1.1 01:01:01.001')
dt.getTime() // 1514739661001
Date.parse(dt) // 1514739661000
Date.parse(dt)
dt
はミリ秒は0
何クリーンな答えに等しい瞬間にキャプチャされている場合にのみ
dt.getTime()
に等しいです! +1 :) –私は結果を計算するので、実際には_string_は必要ありません。答えはありがとうございます。 – faid