GASで日付を文字列に変換する(Utilities.formatDate)

Google Apps Scriptで日付をフォーマットしたいがわからない
Utilities.formatDateを使うのはわかるが、どんな風にかけばよいか

そんな疑問にお答えします。

目次

本記事の内容

  • 日付型を文字列にする方法
  • 変換したい形式に応じたやり方

今回はよく使う場面が出てくる日付の変換について、詳しく解説したいと思います。

日付型を文字列にする方法

function myFunction() {
  var today = new Date(2019, 0, 1, 15, 15, 15);
  Logger.log(today);
}

>log
Tue Jan 01 15:15:15 GMT+09:00 2019

まず、普通に日付型を出力すると、このようになっているかと思います。
これを今回は日本人でもわかりやすいように変形したいと思います。

function myFunction() {
  var today = new Date(2019, 0, 1, 9, 9, 9);
  var strToday = Utilities.formatDate(today, "Asia/Tokyo", "yyyy/MM/dd HH:mm:ss");
  Logger.log(strToday);
}

>log
2019/01/01 9:09:09

普段見慣れている形式に変更されたかと思います。
GASで日付を文字列に変換する場合には「Utilities.formatDate()」を使用します。

使い方としては、
Utilities.formatDate(変換したい日付, “タイムゾーン”, “変換形式”)
といった感じで使います。

タイムゾーンについては、海外時間の場合には他の値を入れますが、
日本時間を取得したい場合には「Asia/Tokyo」を入れておきます。

変換形式については今回は
年/月(2ケタ表記)/日(2ケタ表記) 時(24時間表記)/分/秒
で変換しました。
年はy, 月はM, 日はd, 時はH, 分はm, 秒はsに対応してきたところに入ってきます。
順番を入れ替えたとしても対応するところに入ってくるようになります。
仮に月と分を間違って書いた場合にはこんな感じになります。

function myFunction() {
  var today = new Date(2019, 0, 1, 9, 9, 9);
  var strToday = Utilities.formatDate(today, "Asia/Tokyo", "yyyy/mm/dd HH:MM:ss");
  Logger.log(strToday);
}

>log
2019/09/01 9:01:09

他にも細かなフォーマットの仕方については次で説明します。

変換したい形式に応じたやり方

先ほどは基本的なものを説明いたしましたが、他にもいろいろとできますので、ご紹介します。

月や日などゼロを省略して表記

1月や1日を先ほどでは01月、01日
9時9分9秒は09:09:09と表記されていたかと思います。
それを1月や1日といったゼロを省略したいときにはM、dなどを一つだけ使います
こんな感じです。

function myFunction() {
  var today = new Date(2019, 0, 1, 9, 9, 9);
  var strToday = Utilities.formatDate(today, "Asia/Tokyo", "yyyy/M/d H:m:s");
  Logger.log(strToday);
}

>log
2019/1/1 9:9:9

時間表記(12時間、24時間)

時間を12時間表記か、24時間表記かで分けることができます。
12時間表記の場合には小文字のhを、24時間表記の場合には大文字Hを使います。
24:00:00を例に見てみます。

function myFunction() {
  var today = new Date(2019, 1, 9, 15, 15, 15);
  var strToday1 = Utilities.formatDate(today, "Asia/Tokyo", "HH:mm:ss");
  var strToday2 = Utilities.formatDate(today, "Asia/Tokyo", "hh:mm:ss");
  Logger.log(strToday1);
  Logger.log(strToday2);
}

>log
00:00:00
12:00:00

何週目か(年、月)

小文字のwを使うことで年単位で何週目かを返してくれます。また、大文字Wを使うことでその月内で何週目かを表記します。
2019年の2月9日を例にします。

function myFunction() {
  var today = new Date(2019, 1, 9, 15, 15, 15);
  var strToday = Utilities.formatDate(today, "Asia/Tokyo", "w週目(年)W週目(月)");
  Logger.log(strToday);
}

>log
2週目(年)6週目(月)

曜日

Eを使うことによって曜日を出すことが可能となります。
2019年の1月1日を出力してみます。

function myFunction() {
  var today = new Date(2019, 0, 1, 9, 9, 9);
  var strToday = Utilities.formatDate(today, "Asia/Tokyo", "E");
  Logger.log(strToday);
}
log > Tue

英語表記での曜日が出てきますが、火曜とか日本語表記が良いという場合には、
getDayという関数を組み合わせながら使うのもわかりやすいです。

function myFunction() {
  var today = new Date(2019, 0, 1, 9, 9, 9);
  var day = today.getDay();
  var arrayDay = ['日', '月', '火', '水', '木', '金', '土']
  var strDay = arrayDay[day]
  Logger.log(day);
  Logger.log(strDay)
}
log > 2
log > 火

getDayでは曜日が0から6で表現された状態で返ってくるので、それを曜日を入れておいた配列と組み合わせて使うことによって表現を変えることができます。

あわせて読みたい
GASを身に着けるための学習本おすすめまとめ プログラミングをしていく際には、基本的な部分はネットになども上がっていますが、暗黙知的な部分を説明してくれていない記事も多いので、躓くことがよくあります。 ま...

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (1件)

目次