質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

3433閲覧

JavaScriptで日付の加減算を行いたいが・・・

TakefusaBoku

総合スコア41

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2016/12/05 15:44

JavaScriptで日付の加算をするとNaNエラーになってしまいます。
はじめて使い始めたので、理由がわからないのですが日付の減算は成功します。

var dt2 = new Date( new Date - 259200000 );
これで3日前の日付を求めています。

これと同じ要領で
var dt3 = new Date( new Date + 8640000 );
しても1日後になりません・・・

試しにこんな書き方してみましたが・・・違いますよね
var i = parseInt(8640000)
var dt3 = new Date( new Date + i );

全然初心者なので、日付の加減算がよくわかっておらず詳しい方ご教示いただけませんでしょうか。

やりたいことは、今日を取得してその3日前と1日後を表示させることです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

JavaScript で + は文字列の連結にも使用します。なので、new Date() + 8640000new Date() を文字列にした Tue Dec 06 2016 01:12:13 GMT+09008640000 を繋げてしまっているのではないでしょうか。

JavaScript

1console.log( new Date() + 8640000 ); // Tue Dec 06 2016 01:12:13 GMT+09008640000 2```3```JavaScript 4 5var dt2 = new Date( new Date().getTime() - 259200000 ); 6console.log( dt2 ); // Date {Sat Dec 03 2016 01:12:13 GMT+0900} 7 8var dt3 = new Date( new Date().getTime() + 8640000 ); 9console.log( dt3 ); // Date {Tue Dec 06 2016 03:36:13 GMT+0900}

【JavaScript の Date は罠が多すぎる - Qiita】
http://qiita.com/labocho/items/5fbaa0491b67221419b4

投稿2016/12/05 16:18

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakefusaBoku

2016/12/06 15:01

大変丁寧な解説いただきありがとうございました。 いい勉強になりました。
guest

0

setDateは1~31以外の値をセットしてもちゃんと月をまたいだ計算をしてくれるので、
このような書き方の方がコード見たときに意図が分かりやすいかもしれません。

JavaScript

1var d = new Date; 2console.log(d); //Date 2016-12-06T15:25:10.484Z 3d.setDate(d.getDate() - 3 ); //3日前にセット 4console.log(d); //Date 2016-12-03T15:25:10.484Z 5d.setDate(d.getDate() - 3 ); //さらに3日前(つまり6日前)にセット 6console.log(d); //Date 2016-11-30T15:25:10.484Z

投稿2016/12/06 15:29

YsMana

総合スコア257

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

参考情報

...
JavaScript の Date クラスはやや使いづらさがあります。Moment.js を使うと、フォーマット(書式整形)や日付計算・時間計算に大変便利です。
...

...

今日から30日後の日付が欲しい

moment().add("days", 30).format("YYYY年MM月DD日"); // => 2013年06月14日
...

投稿2016/12/05 21:53

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakefusaBoku

2016/12/06 15:00

ありがとうございます。 参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問