LoginSignup
1
0

More than 1 year has passed since last update.

【GAS】Date()で取得した現在の時間を今日の0時にする

Last updated at Posted at 2021-08-19

背景

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

参考:

同様の記事ありましたね、、

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0