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");
このアプローチでは、時差をミリ秒単位で計算し、それを期間オブジェクトに変換します。 、時、分、秒を個別に抽出します。
duration オブジェクトをフォーマットするための便利なソリューションを探している場合は、moment-duration-format と呼ばれるサードパーティのプラグインを使用できます。
var s = d.format("hh:mm:ss");
以上がmoment.js を使用して 2 つの日時間の時差を正確に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。