実現したいこと
1日の24時間はその日の朝8:30~翌日の朝8:30です。
(例)
開始日時:2023/03/27 08:00:00
終了日時:2023/04/02 09:00:00
【出力結果】
[ '2023/03/26',
'2023/03/27',
'2023/03/28',
'2023/03/29',
'2023/03/30',
'2023/03/31',
'2023/04/01',
'2023/04/02' ]
該当のソースコード
javascript
1function getEveryDays(sdate,edate) { 2 var result = []; 3 sdate = "2023/03/27 08:00:00"; 4 edate = "2023/04/02 09:00:00"; 5 var basic_sdate = sdate.split(" ")[0] + " 08:30:00"; 6 var date = new Date(basic_sdate); 7 date.setDate(date.getDate() + 1); 8 var basic_sdate2 = Utilities.formatDate(new Date(date.getFullYear(),date.getMonth(),date.getDate(),8,30,0), "Asia/Tokyo", "yyyy/MM/dd HH:mm:ss"); 9 10 var basic_edate = edate.split(" ")[0] + " 08:30:00"; 11 var date2 = new Date(basic_edate); 12 date2.setDate(date2.getDate() + 1); 13 var basic_edate2 = Utilities.formatDate(new Date(date2.getFullYear(),date2.getMonth(),date2.getDate(),8,30,0), "Asia/Tokyo", "yyyy/MM/dd HH:mm:ss"); 14 15 if (basic_sdate <= sdate && sdate <= basic_sdate2) { 16 var loop = new Date(sdate.split(" ")[0] + " 08:30:00"); 17 // console.log("s_between = " + Utilities.formatDate(loop, "Asia/Tokyo", "yyyy/MM/dd HH:mm:ss")); 18 } else { 19 var loop = new Date(date.getFullYear(),date.getMonth(),date.getDate()-2,8,30,0); 20 // console.log("not s_between = " + Utilities.formatDate(loop, "Asia/Tokyo", "yyyy/MM/dd HH:mm:ss")); 21 } 22 if (basic_edate <= edate && edate <= basic_edate2) { 23 var end = new Date(edate); 24 // console.log("e_between = " + Utilities.formatDate(end, "Asia/Tokyo", "yyyy/MM/dd HH:mm:ss")); 25 } else if (edate >= (edate.split(" ")[0] + " 00:00:00") && edate < basic_edate){ 26 var end = new Date(date2.getFullYear(),date2.getMonth(),date2.getDate()-1,8,30,0); 27 } else { 28 var end = new Date(date2.getFullYear(),date2.getMonth(),date2.getDate()-2,8,30,0); 29 // console.log("not e_between = " + Utilities.formatDate(end, "Asia/Tokyo", "yyyy/MM/dd HH:mm:ss")); 30 } 31 while(loop < end){ 32 var strLoop = Utilities.formatDate(loop, "Asia/Tokyo", "yyyy/MM/dd"); 33 result.push(strLoop); 34 var newDate = loop.setDate(loop.getDate() + 1); 35 loop = new Date(newDate); 36 } 37 console.log(result); 38 return result; 39}
補足情報(FW/ツールのバージョンなど)
上記の書き方で実現できたものの、自分的には書き方が冗長で一番バカっぽい書き方のようですが、
いかがでしょうか。

回答2件
あなたの回答
tips
プレビュー