背景
GASでGoogleカレンダーの情報をなんやかんやしたくて、
GASをいつ実行しても、「今日の0時0分」が欲しい!と思いました。
文字列だけ取り出せるけど、Date型にしておきたく、少し悩んだのでメモ。
もっとシンプルなもの
コメントにて頂きました、シンプルにsetHours利用する方法で良いのですね...!
リファレンスしっかり学びます。
ご指摘ありがとうございます!
const date = new Date();
date.setHours(0,0,0);
Logger.log(date);
14:48:40 情報 Thu Aug 19 00:00:00 GMT+09:00 2021
完成形
Yattane.gs
var strToday = Utilities.formatDate(new Date(),"JST","yyyy-MM-dd").split("-");
const todayStartTime = new Date(strToday[0], strToday[1] - 1, strToday[2]);
Logger.log(todayStartTime);
10:33:44 情報 Thu Aug 19 00:00:00 GMT+09:00 2021
実行時間は10時だけど、しっかり00:00:00になってる。
これで出来た!やったね!
※まだまだキレイにできそう...
過程とか試行錯誤
①現在時刻の取得
const today = new Date();
Logger.log(today);
10:33:44 情報 Thu Aug 19 10:33:44 GMT+09:00 2021
②Date→文字列に変換
この時に、年月日のみ取り出すようにしてます。
const strToday = Utilities.formatDate(new Date(),"JST", "yyyy-MM-dd");
Logger.log(strToday);
10:33:44 情報 2021-08-19
③ハイフンで分ける!配列に格納
splitですね。
配列なので、宣言をconst
からvar
にしました。
var strToday = Utilities.formatDate(new Date(),"JST", "yyyy-MM-dd").split("-");
Logger.log(strToday);
10:33:44 情報 [2021, 08, 19]
④年月日情報から、Date型を作成!
Yattane.gs
var strToday = Utilities.formatDate(new Date(),"JST","yyyy-MM-dd").split("-");
const todayStartTime = new Date(strToday[0], strToday[1] - 1, strToday[2]);
Logger.log(todayStartTime);
10:33:44 情報 Thu Aug 19 00:00:00 GMT+09:00 2021