moment.js を使用して 2 つの日時間の時差を正確に計算するにはどうすればよいですか?

DDD
リリース: 2024-11-17 11:39:01
オリジナル
299 人が閲覧しました

How to Accurately Calculate the Time Difference Between Two Datetimes using moment.js?

日時間の時差の取得

2 つの特定の日時間の時差を求めることは、多くのアプリケーションで共通の要件です。この記事では、moment.js を使用して正確な時間間隔を取得し、潜在的な問題に対処し、代替アプローチを提供するための包括的なガイドを提供します。

問題ステートメント

文字列として表される 2 つの日時を指定すると、目標は次のとおりです。時差を計算し、HH:MM:SS 形式で表示します。例:

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

//expected result:
"00:39:30"
ログイン後にコピー

初期試行と問題

moment.js の diff 関数を使用して、次のことを試すことができます:

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 時間です。

正解解決策

この問題を解決するには、2 つのオプションがあります:

オプション 1 (期間が 24 時間未満の場合):

moment.utc(moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"))).format("HH:mm:ss")
ログイン後にコピー

これこのアプローチでは時差を UTC に変換し、夏時間を排除します。

オプション 2 (24 時間以上の期間の場合):

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");
ログイン後にコピー

このアプローチでは、時差をミリ秒単位で計算し、それを期間オブジェクトに変換します。 、時、分、秒を個別に抽出します。

代替アプローチ: moment-duration-format

duration オブジェクトをフォーマットするための便利なソリューションを探している場合は、moment-duration-format と呼ばれるサードパーティのプラグインを使用できます。

var s = d.format("hh:mm:ss");
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート