【GAS GoogleAppsScript | 基礎コード】日付・時刻の操作をするDateオブジェクト!

スポンサーリンク

日付・時刻の操作をするDateオブジェクト!

スプレッドシートのデータを扱うときに避けて通れないのが、日付や時刻の処理。

入力した日やイベントの日程など様々なところで日付や時刻が出てきますね。

GASには日付や時刻を取り扱うDateオブジェクトというものが用意されていますので、今回はそれの紹介をしたいと思います!

Dateオブジェクト

前述の通りDateオブジェクトは日付を扱うオブジェクトです。

以下のようにnew演算子でインスタンスを作成することが出来ます

構文

var 変数名 = new Date()

このように、引数になにも指定しないと、現在の時刻でインスタンスが生成されます。

日付を指定してインスタンスを作成する場合は、以下のようにいくつか方法があります。

年・月・日・時・分・秒の数字をそれぞれ引数で与える

構文

var 変数名 = new Date(年, 月, 日 [, 時, 分, 秒])

引数に年・月・日・時・分・秒のそれぞれの数字を与えます。時・分・秒は省略が出来ます。(省略すると00:00:00が設定されます)

月は、1~12ではなく、0~11で指定するので注意してください。

function test(){

  // 指定の日付でインスタンスを生成する(2020/3/12)
  var d = new Date(2020, 2, 12)
 
  // ログに書き出し
  Logger.log(d)  // Thu Mar 12 00:00:00 GMT+09:00 2020

}

日付文字列を引数に与える

日付文字列を与えてインスタンス生成をすることも出来ます。

構文

var 変数名 = new Date("yy/mm/dd hh:mm:ss")

日付文字列とは、「2020/03/12 12:22:34」などのお馴染みの形ですね。

文字列なので、「"」ダブルクォーテーションか「'」シングルクォーテーションで囲ってください。

function test(){

  // 日付で文字列を指定してインスタンスを生成する(2020/12/22)
  var d = new Date("2020/12/22")
 
  // ログに書き出し
  Logger.log(d)  // Tue Dec 22 00:00:00 GMT+09:00 2020

}

タイムスタンプ値を引数に指定する

また、タイムスタンプ値を引数に指定することでインスタンスを生成することも出来ます。

タイムスタンプ値とは、「1970/01/01 00:00:00」からの経過ミリ秒のことです。

※「タイムスタンプ 変換」などのキーワードでググれば変換ツールが出てきますよ。UNIX時間の場合は、タイムスタンプ値✕1000にしてください。Dateオブジェクトがミリ秒単位なのに対して、UNIX時間は秒単位の為

function test(){

  // タイムスタンプを指定してインスタンスを生成する
  // 2007/2/21のUNIX時間 1171983600
  var d = new Date(1171983600 * 1000)
 
  // ログに書き出し
  Logger.log(d)  // Wed Feb 21 00:00:00 GMT+09:00 2007

}

Dateオブジェクトのメソッド

Dateオブジェクトのメンバー一覧はこちらです。取得するメソッドと設定するメソッドがそれぞれありますね。

メンバー 説明
getFullYear() 「年」(4桁までの年)を返す
getMonth() 「月」(0-11)を返す
getDate() 「日」(0-31)を返す
getDay() 「曜日」(0-6)を返す
getHours() 「時」(0-23)を返す
getMinutes() 「分」(0-59)を返す
getSeconds() 「秒」(0-59)を返す
getMilliseconds() 「ミリ秒」(0-999)を返す
getTime() 1970年1月1日 00:00:00からの経過ミリ秒を返す
getTimezoneOffset() 現地の時刻と協定世界時刻(UTC)との差を返す
setFullYear(y) 「年」をy(4桁までの年)に設定する
setMonth(m) 「月」をm(0-11)に設定する
setDate(d) 「日」をd(0-31)に設定する
setHours(h) 「時」をm(0-23)に設定する
setMinutes(m) 「分」をs(0-59)に設定する
setSeconds(s) 「秒」をms(0-59)に設定する
setMilliseconds(ms) 「ミリ秒」ts(0-999)に設定する
setTime(ts) 1970年1月1日 00:00:00からの経過ミリ秒をtsに設定する
toString() 日時を文字列に変換する
toDateString() 日付部分を文字列に変換する
toTimeString() 時刻部分を文字列に変換する
toJSON() 日時をJSON文字列に変換する

サンプルで動作を確認してみましょう!

function test(){

  // インスタンスを生成(1980/12/22 23:55:49:654)
  var d = new Date("1980/12/22 23:55:49:654")
 
  // ログに出力
  Logger.log(d.getFullYear())        // 1980.0
  Logger.log(d.getMonth())           // 11.0
  Logger.log(d.getDate())            // 22.0
  Logger.log(d.getDay())             // 1.0(月)
  Logger.log(d.getHours())           // 23.0
  Logger.log(d.getMinutes())         // 55.0
  Logger.log(d.getSeconds())         // 49.0
  Logger.log(d.getMilliseconds())    // 654.0
  Logger.log(d.getTime())            // 3.46344949654E11
  Logger.log(d.getTimezoneOffset())  // -540.0

  
  d.setFullYear(2007) 
  d.setMonth(01)
  d.setDate(21)
  d.setHours(21)
  d.setMinutes(39)
  d.setSeconds(44)
  d.setMilliseconds(777)
  
  // ログに出力
  Logger.log(d) // Wed Mar 21 21:39:44 GMT+09:00 2007
  
  
  // その他のメソッド
  Logger.log(d.toString())           // Wed Feb 21 2007 21:39:44 GMT+0900 (日本標準時)
  Logger.log(d.toDateString())       // Wed Feb 21 2007
  Logger.log(d.toTimeString())       // 21:39:44 GMT+0900 (日本標準時)
  Logger.log(d.toJSON())             // 2007-02-21T12:39:44.777Z

}

まとめ

日付・時刻扱う、Dateオブジェクトについて紹介しました!日付や時刻の操作は必須なので、しっかり覚えましょう!日付や時刻を操作するには、外部ライブラリの「Moment」というものを使う場合も多いですが、それは追々説明します!