【GAS】日付の取得・演算(Date オブジェクト)
Google Apps Script(GAS)で日付(Dateオブジェクト)を扱う方法をご紹介します。
GAS日付を扱うDate オブジェクトの基本構文
GASではDateオブジェクトで日付や時間を扱います。生成方法や扱い方は複数あるので場面によって使い分けてみてください。
今日・今の日付と時刻を取得
new Date()
日付と時刻を指定して取得
new Date(year, month, date [, hour, minute, second, msecond])
指定の日時でDateオブジェクトを生成する場合は年・月・日・時・分・秒をそれぞれ引数として与えます。引数を与える場合は日付は必須、時間以降は任意です。月は<1~12>ではなく<0~11>で与えなければならないので注意が必要です。
new Date(date)
- date:日付の文字列(例:「2022/8/17 12:13:59:21」(通常形式)、「Aug 17 2022 12:13:59:21」(英文形式))
日付を数字で取得する
getFullYear:「年」(4桁)を取得
getMonth:「月」(0~11)を取得
getDate:「日」(1~31)を取得
getDay:「曜日」(0→日曜日 ~ 6→土曜日)を取得
getMinutes:「分」(0~59)を取得
getSeconds:「秒」(0~59)を取得
getTime:1970年1月1日00:00:00からの経過ミリ秒を取得
getTimezoneOffset:協定世界時(UTC)との差を取得
日本は「+0900(JST)」と表されますが、「getTimezoneOffset」は現地時刻から見た協定世界時なのでマイナスになってます。
日付を文字列で取得する(文字列に変換する)
toString:日時を文字列で取得
toDateString:日付を文字列で取得
toTimeString:時刻を文字列で取得
toJSON:日時をJSON文字列で取得
日付を設定する
日付の変更メソッドが用意されています。曜日はその他の日付で決まる変数なので曜日のメソッドはありません。
setFullYear:「年」(4桁)を設定
setMonth:「月」(0~11)を設定
getDate:「日」(1~31)を設定
setMinutes:「分」(0~59)を設定
setSeconds:「秒」(0~59)を設定
yyyy/mm/ddの形式で取得する
Utilities.formatDate(date, timeZone, format)
- date(必須):Dateオブジェクト
- timeZone(必須):タイムゾーン(日本時間であれば「’JST’」(Japan Standard Time)を指定)
- format(必須):表示させたいフォーマット形式(SimpleDateFormat 仕様に基づく形式)
下記はフォーマット一例です。
フォーマット | 表示 | 【2019/10/12 09:36:55 (JST)】の場合 |
---|---|---|
yyyy | 年(西暦4桁) | 2019 |
MM | 月(数字2桁) | 10 |
dd | 日(数字2桁) | 12 |
E | 曜日(短縮英語) | Sat |
HH | 時(0時~23時表記、数字2桁) | 09 |
mm | 分(数字2桁) | 36 |
これのフォーマット定義を利用して下記のように変換できます。
日付の演算
日付演算用のメソッドは用意されていない
前提として、Dateオブジェクトを演算用のメソッドは用意されておらず、Dateオブジェクトを数値をして取得してから計算する必要があります。例えば、昨日の日付を取得するコードは下記のように表現できます。
演算の基本
例えば、日を1日だけ加算したければ「getDateメソッドで数値を取得して+1」、月を1か月加算したければ「getMonthメソッドで数値を取得して+1」といった形で演算子、演算後の要素を引数としてsetDateメソッドを適応することで新たな日時が取得できます。
「明日」を取得
「1か月後」を取得
その他、いろいろな日付の取得方法は下記で解説しています。
日付を比較する
比較用のメソッドはなく比較記号を使う
DateクラスにはJavaのbeforeメソッド/afterメソッド/comaperToメソッドのような比較用のメソッドは存在しないため、Date型の変数同士を比較するには比較記号を使います。
まとめ
Dateオブジェクトの基本的な使い方について解説を行いました。