16

JavaScriptで日付を操作するためにmoments.jsを使用しています。すべての日付は UTC です (またはそうあるべきです)。

次の日付があります(現在の時刻から60分):

//Wed, 04 Apr 2012 21:09:16 GMT
to   = moment.utc().add('m', 60).toDate();

ここで、この日付と現在の UTC 日時の差を秒単位で取得したいので、次のようにします。

seconds = moment.utc().diff(to, 'seconds');

10800これはの代わりに返さ3600れるため、1 時間ではなく 3 時間になります。

私が間違っていることはありますか?

ありがとうございました!

編集:

行を更新しseconds = moment().diff(to, 'seconds');て現在の秒数を取得しましたが、-3600正ではありません。

編集:

私は今、これらの2つのモーメントオブジェクトを持っています:

{ _d: Thu, 05 Apr 2012 17:33:18 GMT, _isUTC: true }
{ _d: Thu, 05 Apr 2012 16:38:45 GMT, _isUTC: true }

d1 と d2。

これを行うとd1.diff(d2, 'hours', true);、 が返されます4。それは間違いなくUTCと関係があると思いますが、これはうまくいくはずです。

4

2 に答える 2

17

これは正当なバグです。ここにファイルしました: https://github.com/timrwood/moment/issues/261

これを回避するには、代わりに以下を使用してください。

var a = moment.utc().add('m', 60).toDate(),
    b = moment().diff(to, 'seconds'); // use moment() instead of moment.utc()

toStringまた、日付を取得する必要がある場合はmoment().toString()、ラップされたものへのプロキシとして使用できますDate().toString()

于 2012-04-06T06:19:34.300 に答える
0

を使用しているため、時差が発生している可能性がありますtoDate()。モーメントを直接操作するようにしてください (つまり、 に変更しますto = moment.utc().add('m', 60);)。

于 2012-04-04T20:42:16.640 に答える