日付したい(Date
)
1const now = new Date();
2Logger.log(now);
3// Mon Nov 11 2024 10:37:03 GMT+0900 (Japan Standard Time)
4
5Logger.log(now.toISOString());
6// 2024-11-11T01:37:03.620Z
7
8Logger.log(now.toLocaleString());
9// 11/11/2024, 10:37:03 AM
10
11Logger.log(now.toLocaleString("ja-JP", {timeZone: "JST"}));
12// 2024/11/11 10:37:03
JavaScriptのDate
クラスで日付オブジェクトを操作できます。
注釈
タイムゾーンはGASのプロジェクト設定(全般設定)で変更できます。
現在時刻したい(new Date
)
1const now = new Date();
2console.log(now);
3// Mon Nov 11 2024 10:23:23 GMT+0900 (Japan Standard Time)
4console.log(now.toISOString());
5// 2024-11-11T01:23:23.137Z
引数なしで生成すると現在時刻を取得できます。
1const year = new Date("2024");
2// 2024-01-01T00:00:00.000Z
3
4const date = new Date("2024-11-11");
5// 2024-11-11T00:00:00.000Z
6
7const datetime = new Date("2024-11-11 12:34:56");
8// 2024-11-11T03:34:56.000Z
引数に日時形式の文字列を与えて、Dateオブジェクトに変換できます。
1// TZ=+08:00に設定
2const now = new Date("2024-11-11 12:34:56.789+08:00");
3
4
5console.log(now);
6// Mon Nov 11 2024 13:34:56 GMT+0900 (Japan Standard Time)
7// ↑GASプロジェクトのTZ設定(Asia/Tokyo)に変換されている
8
9console.log(now.toISOString());
10// 2024-11-11T04:34:56.789Z
11// ↑UTC+00:00に変換されている
タイムゾーンを明示した形式の場合、 GASプロジェクトの日時設定や、 UTC時刻に自動で変換されます。
表示形式したい(toLocaleString
)
1const now = new Date();
2const options = {
3 year: "numeric", // [2-digit, numeric]
4 month: "2-digit", // [2-digit, numeric, long, short]
5 day: "2-digit", // [2-digit, numeric]
6 hour: "2-digit", // [2-digit, numeric]
7 minute: "2-digit", // [2-digit, numeric]
8 second: "2-digit", // [2-digit, numeric]
9 fractionalSecondDigits: 3, // [0, 1, 2, 3]
10 hour12: false, // [false, true]
11 timeZone: "Asia/Tokyo", // [UTC, Asia/Tokyo, ...]
12 timeZoneName: "shortOffset", // [short, long, longOffset, shortOffset, longGeneric, shortGeneric]
13 weekday: "long", // [short, long]
14}
15console.log(now.toLocaleString("ja-JP", options));
16// 2024/11/11月曜日 10時56分32.590秒 GMT+9
Date
オブジェクトのtoLocaleString
で、ロケールに合わせた表示形式に変更できます。
ロケールはja-Jp-u-ca-japanese-hc-h12
のような形式で、
言語のユニコード拡張(ja-Jp-u
)や
和暦(ca-japanese
)、
12時間制(hc-h12
)などのオプションを追加できます。
ISO8601したい(Utilities.formatDate
)
1const now = new Date();
2
3// Utilities.formatDate(日付, "タイムゾーン", "表示形式");
4const date = Utilities.formatDate(now, "Asia/Tokyo", "yyyy-MM-dd'T'HH:mm:ss.SSSZ");
5Logger.info(date);
GASのUtilities.formatDate
メソッドで、任意の表示形式に変更できます。
上記サンプルでは、現在時刻を日本の時刻にローカライズして、ISO8601形式で出力しています。
指定子 |
表示内容 |
型 |
例 |
---|---|---|---|
|
Era designator |
Text |
AD |
|
年(4桁) |
Year |
2024 / 24 |
|
月(2桁) |
Month |
01 - 12 |
|
日(2桁) |
Number |
01 - 31 |
|
時(2桁) |
Number |
1 - 24 |
|
分(2桁) |
Number |
00 - 59 |
|
秒(2桁) |
Number |
00 - 59 |
|
ミリ秒(3桁) |
Number |
000 - 999 |
|
曜日 |
Text |
Tuesday; Tue |
|
タイムゾーン |
General time zone |
JST |
|
タイムゾーン |
RFC 822 time zone |
+0900 |
|
タイムゾーン |
ISO 8601 time zone |
+0900 |
週末したい
1// 週末かどうか判定する
2//
3// @param {Date} date - 日付オブジェクト
4function isHoliday(date) {
5 // 曜日を取得
6 const day = date.getDay();
7
8 // 0: 日曜日 ... 6:土曜日
9 if (day === 0 || day === 6) {
10 return true;
11 } else {
12 return false;
13 };
14};
getDay
で曜日を取得できます。
月初/月末したい
1const d1 = new Date();
2d1.setDate(1);
3d1.setHours(0);
4d1.setMinutes(0);
5d1.setSeconds(0);
6// 2024-11-13 12:34:56
7// ==> 2024-11-01 00:00:00
8
9const d2 = new Date();
10d2.setMonth(d2.getMonth() + 1);
11d2.setDate(1);
12d2.setHours(0);
13d2.setMinutes(0);
14d2.setSeconds(0);
15// 2024-11-13 12:34:56
16// ==> 2024-12-01 00:00:00
現在日時を基準に、月初と月末を取得できます。 カレンダーから毎月のイベントを取得したい場合に使えます。