ホームページ > ウェブフロントエンド > jsチュートリアル > Moment.js を使用して 2 つの DateTime 間の時差を正確に計算して書式設定し、24 時間を超える差異を処理するにはどうすればよいでしょうか?

Moment.js を使用して 2 つの DateTime 間の時差を正確に計算して書式設定し、24 時間を超える差異を処理するにはどうすればよいでしょうか?

Patricia Arquette
リリース: 2024-11-26 12:33:14
オリジナル
722 人が閲覧しました

How can Moment.js be used to accurately calculate and format the time difference between two DateTimes, handling differences exceeding 24 hours?

DateTime 間の時差を取得する

時間ベースのデータを扱う場合、指定された 2 つの日付または時刻間の時差を理解することが重要です。この差は、Moment.js ライブラリを使用して計算できます。

Moment.js ソリューション

Moment.js は、時間差を計算するための堅牢な方法を提供します。次の例を考えてみましょう。

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

console.log(moment(moment.duration(now.diff(then))).format("hh:mm:ss"));
ログイン後にコピー

このコードは、「現在」と「当時」の時間差を表す「00:39:30」を出力する必要があります。

Duration to時間間隔の変換

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

この改訂されたコードでは、時間差をミリ秒 (ms) に変換し、moment.duration() 関数を使用して期間オブジェクト ( d)。最後に、duration オブジェクトから時、分、秒を抽出し、時間間隔 (秒) にフォーマットします。このアプローチにより、時差が 24 時間を超える場合でも正確な結果が保証されます。

Moment-Duration-Format プラグイン

あるいは、moment-duration-format プラグインの使用を検討してください。これは期間オブジェクトをフォーマットするための専用メソッドを提供します:

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 = d.format("hh:mm:ss");
ログイン後にコピー

このプラグインでは、時間を差は手動計算を必要とせずに時間間隔に直接フォーマットされます。

以上がMoment.js を使用して 2 つの DateTime 間の時差を正確に計算して書式設定し、24 時間を超える差異を処理するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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