久しぶりに JavaScript の month にハマった。
2017.04.20 11:10
ノマドです。
とあるコンテンツにて JavaScript で取得した日付けの曜日がおかしいという不具合がありました。
不具合をさらに調べると、どうやら次月の日にちの曜日が今月の日にちの曜日に表示されてしまっている不具合でした。
JavaScript で月がひと月ずれるというのは、アレです。そうです getMonth() です。getMonth() は、0-11 の数値を返すので getMonth() + 1 をする必要があるのです。
しかし、今回は違いました。getMonth() じゃなくて new Date() でした。
JavaScript を普段から書いている方からすると、当然ですよというレベルかと思いますが、素人の私は知りませんでした。
new Date() で任意の日付けのオブジェクトを生成する際の引数のフォーマットで month の解釈が異なるということ。
具体的には、こんな感じです。
// カンマ区切りで日時を指定。 var date1 = new Date(2017, 1, 1, 0, 0); console.log(date1); // "Wed Feb 01 2017 00:00:00 GMT+0900 (JST)" // 文字列で日時を指定。 var date2 = new Date(2017 + "/" + 1 + "/" + 1 + "/ " + 0 + ":" + 0); console.log(date2); // "Sun Jan 01 2017 00:00:00 GMT+0900 (JST)" // カンマ区切りで日時を指定。(month は -1 する。) var date3 = new Date(2017, 1 - 1, 1, 0, 0); console.log(date3); // "Sun Jan 01 2017 00:00:00 GMT+0900 (JST)"
ということで、new Date() の 引数によって month の値が変わるのです。
JavaScript の month 周りは、注意が必要ですね。
以上、ノマドでした〜。
関連コンテンツ
【Tech】Postfix のエラーを受信。scanner.sslsonar.org に突っつかれたよ。
【Tech】DISK CRITICAL - /sys/kernel/debug/tracing is not accessible: Permission denied
【Tech】【重要】他の端末のLINEから、あなたの電話番号による認証が要求されました。Facebook の設定を確認しよう!
【Tech】カゴヤクラウドのVPS契約してみた。初期費用無しで1日単位の課金が使いやすそう。
【Tech】「ご利用の Apple ID がブラウザ上の Apple Store へのサインインに使用されました」というメールが来た。
【Tech】301リダイレクトで検索順位が落ちたけど2カ月で戻ったよ!というおはなし。
【Tech】Google Home Mini に天気を聞いても「すみません、よくわかりません」になってしまう。。
【Tech】LINE Facebook Gmail などのパスワードに自分 or 誰かの誕生日使ってませんか?
【Tech】Search Console にて「一般的な HTTP エラー: ドメイン名が見つかりません」でサイトマップを追加できない。
【Tech】Google の経路情報誤送信による大規模通信障害が発生。ネットの障害に対して個人ができる準備。