web-dev-qa-db-ja.com

2つの日付の間の秒数

したがって、2つの日付YYYY-MM-DDZZZZ-NN-EEがあります

それらの間に何秒あるかを知るにはどうすればよいですか?

160
steven

YYYYとZZZZは年を意味する整数値を意味し、MM&NNは月を意味する整数値を意味し、DDとEEは月を意味する整数値を意味します。

var t1 = new Date(YYYY, MM, DD, 0, 0, 0, 0);
var t2 = new Date(ZZZZ, NN, EE, 0, 0, 0, 0);
var dif = t1.getTime() - t2.getTime();

var Seconds_from_T1_to_T2 = dif / 1000;
var Seconds_Between_Dates = Math.abs(Seconds_from_T1_to_T2);

将来の参照のための便利なソースは、 MDNサイト です

または、日付がjavascriptで解析できる形式である場合

var dif = Date.parse(MM + " " + DD + ", " + YYYY) - Date.parse(NN + " " + EE + ", " + ZZZZ);

そして、あなたはミリ秒単位の差としてその値を使用することができます(両方の私の例のdifは同じ意味を持っています)

217
Martin

引くだけ:

var a = new Date();
alert("Wait a few seconds, then click OK");

var b = new Date();
var difference = (b - a) / 1000;

alert("You waited: " + difference + " seconds");
74
Seth

日付のいずれかまたは両方が将来の日付である場合、2番目の精度が必要な場合は、SOLであると思います。 UTC時間には、発生する約6か月前までわからないうるう秒があるため、それよりも後の日付は、数秒不正確になる可能性があります(実際、人々はマシンを頻繁に更新しないため、将来的には数秒ずれていることがあります)。

これは、日付/時刻ライブラリを設計する理論と、なぜそうなのかを説明しています: http://www.boost.org/doc/libs/1_41_0/doc/html/date_time/details.html# date_time.tradeoffs

14
rmeador

簡単にできます。

var secondBetweenTwoDate = Math.abs((new Date().getTime() - oldDate.getTime()) / 1000);
6
user5945979

2つのDateオブジェクトを作成し、両方でvalueOf()を呼び出してから、それらを比較します。

JavaScript日付オブジェクト参照

5
Jacob Relkin
var a = new Date("2010 jan 10"),
    b = new Date("2010 jan 9");

alert(
    a + "\n" + 
    b + "\n" +
    "Difference: " + ((+a - +b) / 1000)
);
4
Justin Johnson