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

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

新規登録して質問してみよう
ただいま回答率
85.36%
JavaScript

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

Q&A

解決済

1回答

3745閲覧

【JS】dayjsライブラリを用いて、指定した期間の日付を全て取得したいが

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

0クリップ

投稿2020/11/21 02:00

編集2020/11/21 02:01

初歩的な質問ですみません、、、
1か月前の日付から、2か月後の日付までを、全て配列にしたいです。
また、プロパティ名として、日付を"date"、曜日を"week"に設定したいです。

一部抜粋にはなりますが、最終形は、以下の配列を生成したいです。

obj [ {date: '2020/11/20', week: '金'}, {date: '2020/11/21', week: '土'}, {date: '2020/11/22', week: '日'}, {date: '2020/11/23', week: '月'}, {date: '2020/11/24', week: '火'}, ]

現在できてるところとしては、以下の状態まではできました。
ただ、日付にdateという名前をつけ、さらにweekのプロパティを追加するところがわかりませんでした。

obj {'2020/11/20', '2020/11/21', '2020/11/22', '2020/11/23', '2020/11/24'}

以下、上記のできている箇所までのコードになります。

JavaScript

1import dayjs from 'dayjs'; 2import 'dayjs/locale/ja'; 3dayjs.locale('ja'); 4 5// 今日の日付 6const today = dayjs(); 7 8// 今日から1か月前の日付を取得 9const beforeMonth = today.subtract(1, 'months'); 10 11// 今日から2か月前の日付を取得 12const afterMonth = today.add(2, 'months'); 13 14// 1か月前と2か月後の差分の日付を出す 15const totalNumber = afterMonth.diff(beforeMonth, 'day'); 16 17const totalObject = new Object(); 18for(var i = 0; i < totalNumber; i++) { 19 totalObject[i]= beforeMonth.add(i, 'day'); 20 totalObject[i] = totalObject[i].format('YYYY/MM/DD'); 21} 22console.log(totalObject);

totalObject[i]の箇所を、totalObject[i].dateなどやってみましたが、エラーが出ていましました。
以下、エラー内容です。

Uncaught TypeError: Cannot set property 'date' of undefined

そこで、 totalObject.date = ''と、定義?してみましたが、ダメでした。
初歩的な質問で申し訳ないですが、ご回答いただけると幸いです!

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

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

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

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

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

yambejp

2020/11/21 02:26 編集

> 1か月前の日付から、2か月後の日付 の定義があいまいです たとえば3/31の1ヶ月前は2/31で存在しないため2/28にするのか2/28の3日後の の3/3にするのかわかりません(うるう年は今回は割愛)
退会済みユーザー

退会済みユーザー

2020/11/21 04:08

ご丁寧に有難うございますm(_ _)m
guest

回答1

0

ベストアンサー

なんかよくわからないですがとりあえずjsで

javascript

1var d=new Date(); 2var start=d.setMonth(d.getMonth()-1); 3var end=d.setMonth(d.getMonth()+2); 4var count=(end-start)/1000/60/60/24+1; 5var dd=Array(count).fill(null).map((x,y)=>( 6 z=new Date(start+y*60*60*24*1000), 7 Object.fromEntries( 8 [ 9 ["date",z.toLocaleString().split(" ").splice(0)[0]], 10 ["week","日月火水木金土".split("")[z.getDay()]], 11 ]) 12 )); 13console.log(dd);

投稿2020/11/21 02:46

yambejp

総合スコア116623

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

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

退会済みユーザー

退会済みユーザー

2020/11/21 03:28

いつも有難うございますm(_ _)m ・定義づけの甘さ ・シンプルに考える 上記2点、以後気をつけます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問