ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript で 2 つの日時間の時差を正確に計算するにはどうすればよいですか?

JavaScript で 2 つの日時間の時差を正確に計算するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-19 05:41:02588ブラウズ

How to Accurately Calculate the Time Difference Between Two Datetimes in JavaScript?

日時間の時差を取得する方法

2 つのインスタンス間の時差を決定することは、さまざまなプログラミング シナリオにおける基本的なタスクです。この記事では、具体的な例を使用して、この差を効果的に計算する方法について詳しく説明します。

次の要件を考慮してください:

var now  = "04/09/2013 15:00:00";
var then = "04/09/2013 14:20:30";

//expected result:
"00:39:30"

最初は、次のアプローチを試してみるとよいでしょう:

var now = moment("04/09/2013 15:00:00");
var then = moment("04/09/2013 14:20:30");

console.log(moment(moment.duration(now.diff(then))).format("hh:mm:ss"))
// outputs 10:39:30

ただし、この例では、予期しない値「10」が結果に表示されます。これは、moment.duration が現在とその後の差をミリ秒などの内部値を含むオブジェクトに変換するためです。この期間を時間間隔に変換するには、次を使用できます。

duration.get("hours") + ":" + duration.get("minutes") + ":" + duration.get("seconds")

これにより、望ましい結果が生成されます: "00:39:30"。

注: このアプローチは、24 時間未満の期間にのみ適しています。継続時間が長い場合は、別のアプローチが必要です。

var now  = "04/09/2013 15:00:00";
var then = "02/09/2013 14:20:30";

var ms = moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"));
var d = moment.duration(ms);
var s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss");

// outputs: "48:39:30"

この場合、時差をミリ秒として計算し、それを継続時間オブジェクト d に変換し、UTC 時間を使用してフォーマットします。これにより、正しい結果「48:39:30」が得られます。

あるいは、moment-duration-format プラグインを使用して、書式設定プロセスを簡素化することもできます。

以上がJavaScript で 2 つの日時間の時差を正確に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。