これ何て呼びますか

スプレッドシートで作ったデータをPDF保存した際に、ファイル名を翌月にしたいのですが、下記のコードになにをプラスしたら翌月になりますか?(now.getMonth()+1で翌月になると思ったのになりません....)


function getTimestamp () {
var now = new Date();
var year = now.getYear();
var month = now.getMonth() ;

return year + "_"+ month ;

}

A 回答 (2件)

こんにちは



getMonth()に1を加えるような考え方だと、2月~13月という結果になりませんか?
(実は、後述の理由で1を加算する必要はあるのですが…)
No1様の回答にあるように、date型変数のままで1か月後を算出してから、文字にするのが良いと思います。(12月→1月の繰り上げを自動でやってくれます)

なお、実際のgetMonth()で返される値は0~11ですので、通常使用している「月」表示にするには+1してあげる必要があります。
https://developer.mozilla.org/ja/docs/Web/JavaSc …
また、getYear()は使わず、getFullYear()を利用なさる方が宜しいでしょう。
https://developer.mozilla.org/ja/docs/Web/JavaSc …

また、月には大の月、小の月があるので単純に月だけを翌月にしてしまうと問題が起こる場合があります。
例えば、「2020/1/31」を基に翌月を「2020/2/31」としてしまうと、実際の意味としては「2020/3/2」になるので、そこからgetMonth()を取ると 2(=3月のことです)が返されることになります。
これを回避するには、(「日」は最終的には利用しないようですので)各月に必ず存在する日付(=1日とか)を基に計算させれば良いと考えられます。

具体的な例を挙げておくならば…
var now = new Date();
now = new Date(now.getFullYear(), now.getMonth()+1, 1);
return now.getFullYear() + "_" + (now.getMonth()+1);
のような感じではないでしょうか。
    • good
    • 0
この回答へのお礼

ご丁寧に教えて頂き本当にありがとうございます!!
無事に完成いたしました。やはり私の書き方が間違っておりました....
本当に助かりました^^!

お礼日時:2020/01/22 23:26

正直経験は皆無ですが、



https://tonari-it.com/gas-moment-add-subtract/

この辺りを参考にすると、

var now = new Date();
var Month_1 = new Date(now.setMonth(now.getMonth()+1));

で変数:Month_1 は1か月後の日付になります。
ただ月末や閏年とかどうするのかについては・・・・?

日付の表示形式については問題ないのですよね?
私は弄ってて『???』となりましたが、

https://qiita.com/KazumasaIwazaki/items/9d5a783b …

ここを参考にしました。
    • good
    • 0
この回答へのお礼

詳しく教えて頂きありがとうございます!!
サイトもとても参考になりました^^!

お礼日時:2020/01/22 23:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報