4

最近JSで遊んでいて面白いものを見つけました。それが私がクロムコンソールに書いたものです:

today = new Date()
-> Mon Apr 29 2013 13:06:01 GMT+0200 (CEST)
DAY = 1000 * 3600 * 24
-> 86400000
today - 2 * DAY
-> 1367060761452
today + 2 * DAY
-> "Mon Apr 29 2013 13:06:01 GMT+0200 (CEST)172800000"

そして、加算/減算の操作の種類に応じて、なぜ異なる種類の答えが得られるのか疑問に思っています。私がそのようなことをするとき:

today - (-2) * DAY

すべて順調。イデオロギーはありますか、それともバグですか?

4

4 に答える 4

3

今日 + 2 * DAY は文字列の連結を使用します。適切に行いたい場合は、today.getTime() を使用してください。

例:

tomorrow = new Date()
tomorrow.setTime(today.getTime() + DAY)
于 2013-04-30T09:04:33.397 に答える
2

の場合、これは日付オブジェクト-のメソッドを使用したマイナス演算子です。.valueOf

for の間+、それは最初に文字列連結と見なされます。

today - 2 * DAYと見なされますtoday.valueOf() - 2 * DAY

today + 2 * DAYと見なされますtoday.toString() + 2 * DAY

したがって、日付オブジェクトで数学演算を使用する場合は、today.getTime()の代わりに使用しtodayます。

于 2013-04-30T09:03:53.600 に答える
0

このようなJavaScriptの日付に日を加算および減算すると思います

var today= new Date();
var addDay=30;
today.setDate(today.getDate()+addDay);

さて、今日は今日から次の 30 番目の日付を指しています

于 2013-04-30T09:41:45.927 に答える