2016-04-09 15 views
-1

これを試しましたが、期待した結果が得られませんでした。MomentJS:分単位で時間差を検出

最初のiは、日付に以下の方法をdiffをし、それが

var inputDate = moment('02/10/2016', 'MM-DD-YYYY'); 
var birthday = moment('02/05/2016', 'MM-DD-YYYY'); 
var diff = inputDate.diff(birthday, 'days'); 
alert(diff); 

に動作しますが、私は時間差分のための同じアプローチに従うときに失敗します。

var beginningTime = moment('08:45:21'); 
var endTime = moment('07:00:01'); 
var difftm= beginningTime.diff(endTime, 'mm'); 
alert(difftm); 

私は時間の違いが必要です。私はどこでミスをしたのですか?私にお知らせください。ありがとう

+0

「mm」とはどういう意味ですか?あなたの上に 'days'を使うと、' minutes 'と書くとうまくいかないのですか? – Cristy

+0

分は動作しません.... fiddleを見てくださいhttps://jsfiddle.net/tridip/447sxg27/ – Mou

+0

作品:https://jsfiddle.net/447sxg27/1/ – Cristy

答えて

1

あなたが探しているものをパーサに伝える限り、モーメントは日付のない時間を処理できます。 日付のない時刻を解析するときには、どのような差分計算でもDSTの遷移が考慮されない可能性がありますので、間違っている可能性があります。 日付のない時間を使って作業しているときは、間違って終わる夏時間のトランジションの計算を誤って終了しないように、UTCモードを使用することをお勧めします。次のようにそのように、あなたのコードを書くことができます。

console.log(moment.utc('08:45:21', 'HH:mm:ss') 
 
    .diff(moment.utc('07:00:01', 'HH:mm:ss'), 'minutes'));
<script src="https://cdn.jsdelivr.net/momentjs/2.13.0/moment.min.js"></script>

私が思う、あなたが最初の呼び出しが別で評価moment.utcするシナリオに遭遇するであろうと細かく可能です2番目の呼び出しよりもutcの日付が遅くなり、不正確な計算が行われました。このため、解析時間の代わりに日付を指定することができます。

いずれの場合も、DSTの厄介な問題を回避するために、UTCモードを使用してください。

+0

あなたのコードに感謝します。私たちは瞬時に時間を分けることができません。可能であれば、コードを投稿します。 – Mou

+0

私の投稿に対して否定的な投票を削除できますか? – Mou

+0

私はあなたの投稿を投票しなかったので、私はそれを削除することはできません。限り、あなたの最初の質問として、私はあなたがUTCなしdiffとは何を意味するのか分からない。あなたは確かにローカルモードで比較することができますが、あなたの開始時間と終了時間の間にDSTの移行が起これば、間違った結果が得られます。 UTCモードでは、任意のブラウザで2回の距離が全く同じになることが保証されています。 –

2

もしあなたの2番目の例に日付を与えれば - 必要であればセンシティブなものではありません - それではミリ秒単位の違いが得られます。

var beginningTime = moment('1900-01-01 08:45:21'); 
var endTime = moment('1900-01-01 07:00:01'); 
var difftm = beginningTime.diff(endTime, 'mm'); 
alert(difftm); 

https://jsfiddle.net/nicholasduffy/cz2xbjvw/

+0

私は2つの時間を2つの変数に日付の部分が格納されていない....どのように私はそれらを比較することができます時間の点で差をつける瞬間はありますか?日付部分なしで可能ですか? – Mou

+1

ちょうど日付をタックしてください:beginTime = '1900-01-01' + beginningTime;両方に同じ日付を使用してください。正常に動作するはずです。 –

1

だけではなく、daysminutesを使用します。

var beginningTime = moment('1900-01-01 08:45:21'); 
var endTime = moment('1900-01-01 07:00:01'); 
var difftm= beginningTime.diff(endTime, 'minutes'); 
alert(difftm); 

はデモ:彼の答えで述べたduffnようhttps://jsfiddle.net/447sxg27/1/

、あなたの日付が有効な日付(日付+でなければなりません時間)。

+2

モーメントは、それを設定すると時間を解析できます。日付の必要はありません。 –

関連する問題