Moment: startOf( 'day')/ endOf( 'day')がUTCで正しくない

作成日 2014年01月24日  ·  3コメント  ·  ソース: moment/moment

現地時間を使用する場合、startOf( 'day')/ endOf( 'day')関数は期待どおりに機能しますが、UTC時刻を使用する場合、値は現地時間のように扱われます。

http://jsfiddle.net/3d9eU/5/

moment.lang( 'nl');
var t1 = moment(); // 現地時間
var t2 = t1.clone()。utc(); // UTC

console.log( 'LOC valueOf =' + t1.valueOf()); // 1390557395517-> OK
console.log( 'UTC valueOf =' + t2.valueOf()); // 1390557395517-> OK

console.log( 'LOC一日の終わりvalueOf =' + t1.endOf( 'day')。valueOf()); // 1390604399999-> OK
console.log( 'UTC一日の終わりvalueOf =' + t2.endOf( 'day')。valueOf()); // 1390607999999-> OKではありません

console.log( 'LOC1日の終わり_d =' + t1.endOf( 'day')._ d); // 2014年1月24日金曜日23:59:59GMT + 0100(西ヨーロッパ標準時)-> OK
console.log( 'UTC1日の終わり_d =' + t2.endOf( 'day')._ d); // 2014年1月25日土曜日00:59:59GMT + 0100(西ヨーロッパ標準時)-> OK

よろしくお願いします、
ビョルン

Troubleshooting

最も参考になるコメント

m.utc().endOf('day')が現地時間ではなくUTCで1日の終わりを表示する理由を尋ねているようです。 これは仕様によるものです。 utc()は、「時間をUTCのように扱う」ことを意味します。ここで、1日の終わりは23:59:59 _UTC_で、これは西ヨーロッパでは1時間後です。 offset()の動作と同じです。 瞬間が特定のUTCオフセットに入ると、その操作はそのコンテキストで機能します。

言い換えれば、これらは非常に異なることを言います(私は米国の東海岸にいます):

moment().utc().endOf('day').toString(); //=> "Sat Jan 25 2014 23:59:59 GMT+0000"
moment().endOf('day').utc().toString(); //=> "Sun Jan 26 2014 04:59:59 GMT+0000"

それがお役に立てば幸いです。

全てのコメント3件

これはどのバージョンのモーメントですか? dはMomentオブジェクトのプロパティではありません(少なくとも、もう)。 _dがありますが、これは絶対に参照すべきではなく、ここでは非常に誤解を招く可能性があります。 実際の問題に関しては、それは私にとってはうまくいきます:

moment().utc().endOf('day').format(); //=> '2014-01-24T23:59:59+00:00'

先史時代のバージョンを使用していると思いますか?

バージョン2.5.0を使用しています。

プロパティ '_d'は、デバッグ中にMomentに含まれる値を確認するために使用するものです。 (誤解してすみません)。 しかし、なぜこのプロパティは現地時間とUTCで異なるのですか? どちらも、現地時間の+0100およびUTCの+0000ではなく、+ 0100のタイムゾーンを持っています。 http://jsfiddle.net/3d9eU/5/を参照してください

現地時間:2014年1月24日金曜日23:59:59 GMT + 0100(西ヨーロッパ標準時)
UTC:2014年1月25日土曜日00:59:59 GMT + 0100(西ヨーロッパ標準時)は、2014年1月24日金曜日23:59:59 GMT + 0100(西ヨーロッパ標準時)であり、プロパティ_isUTC = trueである必要があります。 ?

m.utc().endOf('day')が現地時間ではなくUTCで1日の終わりを表示する理由を尋ねているようです。 これは仕様によるものです。 utc()は、「時間をUTCのように扱う」ことを意味します。ここで、1日の終わりは23:59:59 _UTC_で、これは西ヨーロッパでは1時間後です。 offset()の動作と同じです。 瞬間が特定のUTCオフセットに入ると、その操作はそのコンテキストで機能します。

言い換えれば、これらは非常に異なることを言います(私は米国の東海岸にいます):

moment().utc().endOf('day').toString(); //=> "Sat Jan 25 2014 23:59:59 GMT+0000"
moment().endOf('day').utc().toString(); //=> "Sun Jan 26 2014 04:59:59 GMT+0000"

それがお役に立てば幸いです。

このページは役に立ちましたか?
0 / 5 - 0 評価