【GAS】日付を操るDateオブジェクト


今回は、Google App ScriptsのDateオブジェクトを見ていきます。日付を扱うなら必須なので、是非どのようなものかを覚えておいて欲しいです。

他言語である日付の妥当性をチェックする機能がないから、このオブジェクトの使い方が特に重要になるんだにゃ。
Dateオブジェクトとは

Dateオブジェクトの使い方を確認しておきましょう。このオブジェクトを使うためには、インスタンス化が必要なので、Newでインスタンス化して変数に入れて使うことになります。
使い方:変数 = new Date(引数)
↑のようにすると、Dateオブジェクトができます。引数部分は必須ではありませんが入れる内容によって、作られるDateオブジェクトが異なってきます。
- 引数なし → 実行日時(今日)のDateオブジェクト
- 日付になる引数 → 指定した日付をDateオブジェクトに変換
- 日付にならない引数 → Invalid Date(無効な日付)のDateオブジェクト
<使い方>
変数 = new Date(引数)
↑のようにすると、Dateオブジェクトができます。引数部分は必須ではありませんが入れる内容によって、作られるDateオブジェクトが異なってきます。
- 引数なし → 実行日時(今日)のDateオブジェクト
- 日付になる引数 → 指定した日付をDateオブジェクトに変換
- 日付にならない引数 → Invalid Date(無効な日付)のDateオブジェクト

実行日時を表したいなら引数なし、特定の日時が必要なら文字列等で日時を指定して渡すと、Dateオブジェクトに変換、日付として表せないものは、Invalid Dateが返ってくるにゃ。3つの使い方をよく覚えておくと使いやすいにゃ。
使い方を見てみよう
基本的な使い方

それでは使い方を見ておきましょう。まずは基本的な使い方から。

それでは使い方を見ておきましょう。まずは基本的な使い方から。
// 引数なしで使用すると、現在日時のDate型を返す
const today = new Date();
console.log(today);
>> Sun Sep 04 2022 00:00:00 GMT+0900 (Japan Standard Time)
// 日付を入れると、その日付の0時ちょうどの日時のDate型を返す
const today = new Date("2022/12/31");
console.log(today);
>> Sat Dec 31 2022 00:00:00 GMT+0900 (Japan Standard Time)
// 日時を入れると、その日時を表すDate型を返す
const today = new Date("2022/12/31 12:34:56");
console.log(today);
>> Sat Dec 31 2022 12:34:56 GMT+0900 (Japan Standard Time)
// 日付ではない値を入れると"Invalid Date"(無効な日付)を返す
const today = new Date('aaa');
console.log(today);
>> Invalid Date
Dateオブジェクトの関数

オブジェクトに対し、関数を使うと特定の値を返すことができるにゃ。年だけ、分だけなど特定の場所を返せると、より幅が広がるにゃ。
const today = new Date("2022/12/31 12:34:56");
// 年を返す
console.log(today.getFullYear());
>> 2022
// 月を返す(ただし、0~11で返されるため+1をする)
console.log(today.getMonth()+1);
>> 12
// 日を返す
console.log(today.getDate());
>> 31
// 時を返す
console.log(today.getHours());
>> 12
// 分を返す
console.log(today.getMinutes());
>> 34
// 秒を返す
console.log(today.getSeconds());
>> 56
// 曜日を表す数字を返す(日曜日から0となり、土曜日が6となる)
console.log(today.getDay());
>> 6
getTime()でUnixタイムスタンプを取得する

getTime関数を使うことで、基本的には、Unixタイムスタンプを返します。Invalid Dateになる場合は、 NaNを返します。

getTime関数を使うことで、基本的には、Unixタイムスタンプを返します。Invalid Dateになる場合は、 NaNを返します。
const today = new Date("2022/12/31 12:34:56");
console.log(today.getTime())
>> 1672457696000
const today = new Date(1672457696000);
console.log(today)
>> Sat Dec 31 2022 12:34:56 GMT+0900 (Japan Standard Time)
const today = new Date("aaa");
console.log(today.getTime())
>> NaN

このNaNが返ってくるところがつかいどころだにゃ。日付データでなければNaNが返ってくることを知っていれば、条件分岐も可能だにゃ。ぜひ試して見て欲しいんだにゃ。

このNaNが返ってくるところがつかいどころだにゃ。日付データでなければNaNが返ってくることを知っていれば、条件分岐も可能だにゃ。ぜひ試して見て欲しいんだにゃ。
日付データかそれ以外か

最後に、何が日付データとして扱われるのかの例を載せておきます。自由入力をさせる場合などは、気をつけなければならないので、よく覚えておいてくださいね。
日付データとなる場合
const today = new Date("2022/12/31");
console.log(today)
>> Sat Dec 31 2022 00:00:00 GMT+0900 (Japan Standard Time)
const today = new Date("2022-12-31");
console.log(today);
>> Sat Dec 31 2022 09:00:00 GMT+0900 (Japan Standard Time)
const today = new Date("2022.12.31");
console.log(today);
>> Sat Dec 31 2022 09:00:00 GMT+0900 (Japan Standard Time)
const today = new Date("2022 12 31");
console.log(today);
>> Sat Dec 31 2022 09:00:00 GMT+0900 (Japan Standard Time)
const today = new Date("2022, 12, 31");
console.log(today);
>> Sat Dec 31 2022 09:00:00 GMT+0900 (Japan Standard Time)
const today = new Date("2022/12-31");
console.log(today);
>> Sat Dec 31 2022 09:00:00 GMT+0900 (Japan Standard Time)
const today = new Date("2022/12/31 12:35:45");
console.log(today);
>> Sat Dec 31 2022 12:35:45 GMT+0900 (Japan Standard Time)
日付データにならない場合
const today = new Date("20221231");
console.log(today);
>> Invalid Date
const today = new Date("2022_12_31");
console.log(today);
>> Invalid Date
const today = new Date("2022年12月31日");
console.log(today);
>> Invalid Date
const today = new Date("令和4年12月31日");
console.log(today);
>> Invalid Date
const today = new Date("22/12/31");
console.log(today);
>> Invalid Date
const today = new Date("12:35:45");
console.log(today);
>> Invalid Date
const today = new Date("12時35分45秒");
console.log(today);
>> Invalid Date
プログラミングを学ぶならTechAcademy(テックアカデミー)がおすすめ!

独学で苦戦している人は、一度しっかりと基礎を学ぶと次のステップへ進めますよ。今のおすすめは、TechAcademy(テックアカデミー)ですね。
- オンラインで選抜された現役エンジニアから学ぶことができる
- 自宅からWeb制作・プログラミング・アプリ開発など幅広い分野を学べる
- 学ぶだけではなく、転職の支援、副業に活かせるスキルの習得、副業の仕事紹介まで行っている

無料体験や相談もあるから、一度試してみてもいいんだにゃ!
\無料体験、無料相談はこちらから/