こんにちは。
ITエンジニアのアセロラです。
GASって、無料で使えてスケジュール設定もできるので、とても便利ですよね。
今回はそんなGASのスケジュール処理によく登場する「日付型」や「日付関数」にまつわるコードをまとめていきます。
目次から必要なコードを探してみてください。
目次
日付を取得する
現在の日時を取得:new Date()
today = new Date();
アセロラ
昨日の日付を取得
yesterday = new Date();
yesterday.setDate(yesterday.getDate()-1);
アセロラ
まず今日の日付を new Date()で宣言して、その日付を setDate で 1つ前の日に設定します。
翌日にするには逆に+1してあげればOKです。
指定の日付を取得
date = new Date('2022/01/01'); //日付
datetime = new Date('2022/01/01 00:00:00'); //時刻も指定する場合
アセロラ
文字ではなく数値型で、new Date(2022, 1, 1) とする方法もあります。
年月日や曜日を取得する
年、月、日、時、分、秒を取得:getFullYear()など
today = new Date();
console.log(today.getFullYear());
console.log(today.getMonth()+1);
console.log(today.getDate());
console.log(today.getHours());
console.log(today.getMinutes());
console.log(today.getSeconds());
アセロラ
getFullYeay()とgetYear()は別物なので注意。後者は1900年から数えた年数が返ってきます。
getMonth()は0〜11の数で返ってくる(10月なら9となる)ので、+1すると良いでしょう。
曜日を取得:getDate()
today = new Date();
weekdayNumber = today.getDay();
アセロラ
getDate()とややこしいですが、関数名はgetDay()です。
日曜が0で土曜が6となる、0〜6の数値を返却します。
おまけ:曜日を日本語で取得する
// 日〜土の日本語表記リストを用意する
const weekdayJp = ["日", "月", "火", "水", "木", "金", "土"];
today = new Date();
console.log(weekdayJp[today.getDay()]);
アセロラ
英語の曜日名(MonとかSun)ではなく日本語の曜日名にしたい場合は、こういう工夫が必要です。
おまけ:2022年1月1日(土)みたいな文字列にしたい
const weekdayJp = ["日", "月", "火", "水", "木", "金", "土"];
today = new Date();
todayString = Utilities.formatDate(today, 'JST', 'yyyy年M月d日');
weekdayString = '(' + weekdayJp[today.getDay()] + ')';
console.log(todayString+weekdayString);
アセロラ
年月日の形式で出力するには、Utilities.formatDate()を利用します。
曜日のカッコ表記のために、「(」と曜日と「)」で文字列をつなげています。
日付を文字列に・文字列を日付に変換する
日付→文字列:Utilities.formatDate()
today = new Date();
todayString = Utilities.formatDate(today, 'JST', 'yyyy-MM-dd HH:mm:ss');
アセロラ
Utilitiesはデフォルトで呼び出せるライブラリです。
‘yyyy-MM-dd HH:mm:ss’の部分で年月日を出力指定してます。
おまけ:いろいろな日時指定フォーマット(yyyy-MM-dd HH:mm:ss 以外)
yyyy-MM-dd HH:mm:ss以外に使いそうなものをピックアップしました。
指定子 | 意味 | 例 |
---|---|---|
w | 1年のうち第何周か | 27 |
W | 月のうち第何周か | 2 |
E | 曜日名(英語) | Tuesday ; Tue |
u | 曜日番号 (1 = Monday, …, 7 = Sunday) | 1 |
a | AMまたはPM | PM |
K | 時(AM/PM表記) | 0 |
S | ミリ秒 | 978 |
z | タイムゾーン(詳しい) | Pacific Standard Time ; PST ; GMT-08:00 |
Z | タイムゾーン(時分4桁のみ) | -0800 |
アセロラ
文字列→日付:new Date()で指定すればOK
date = new Date('2022-01-01 00:00:00');
date = new Date('2022/01/01 00:00:00');
アセロラ
年月日はハイフンとかスラッシュ区切りでOKです。
案外いろいろな文字列を日付に変えてくれるので、一回やってみてだめなら上記の様な形式に揃えましょう。
タイムゾーンは今いる地域をもとに設定されるようです。
日本であれば東京時間(GMT+0900)で扱われます。
まとめ
参考になる書き方はありましたか?
GASはドキュメントが少なくて調べごとに苦戦する印象なので、思いついたネタは記事にしていこうかなと思ってます。
この記事のまとめ
- new Date()で現在時刻をdateオブジェクトで取得できる
- 昨日や翌日にするにはsetDate()で日付を調整する
- Utilities.formatDate()で好きなフォーマットで文字列に変換できる
ではまた!