rin-bamboo
@rin-bamboo (Rin Bamboo)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Node.jsで日付入力を行うと1か月先が表示される

解決したいこと

Node.jsでDiscordのBOT開発を行っているのですが、
日付を出力する部分でなぜか想定の1か月先が表示されてしまいます。

発生している問題

        yearx = Math.trunc(rec_date/10000)
        monthx = Math.trunc((rec_date - yearx*10000)/100)
        dayx = (rec_date - monthx * 100 - yearx * 10000)

        let rec_date_day =  new Date(yearx, monthx, dayx, 00, 00, 00).toLocaleString('ja-JP', { timeZone: 'Asia/Tokyo' })
        console.log(rec_date_day )

入力と出力

入力値:rec_date = 20220810
出力:2022/9/10 0:00:00

自分で試したこと

1.計算結果の間違い
計算の結果が間違えてるのかと思い、
yearx、monthx、dayxの値を出力しましたが、問題なく
yearx:2022
monthx:8
dayx:10
が表示されていました。

2.少数の計算の問題
表示では出てこない計算上の小数点が悪さをしているのかと思い、はじめ使っていた
Math.floorからMath.truncに置き換えてみましたが結果は変わりませんでした。

調べても同じような問題に直面している記事が見つからなかったため、質問させていただきました。

0

1Answer

変な仕様なんですが、 Date に渡す月の値は0始まり(1月なら0、2月なら1……)になっています。 monthx - 1 を渡してください。

1Like

Comments

  1. @rin-bamboo

    Questioner

    そんな仕様が…
    ありがとうございます!

Your answer might help someone💌