Yuki's bnb blog

こんにちは!Yukiといいます。本業のかたわら大阪で2016年夏から民泊運営のお手伝いをしています。民泊業務に関する様々なことを自動化・効率化したいと思い日々活動しています。 お気軽にコメント・お問い合わせください :) TOEICスコア 985

【保存版!GAS】Moment.jsで日付&時刻をフォーマットする方法一覧

f:id:yukibnb:20190625230432p:plain

こんにちは!
Yuki (@yukibnb) です。


前回Google Apps Scriptでの日付&時刻処理にはMoment.jsというライブラリがおすすめと紹介しました。

今回は実際にMoment.jsを使用してどのように日付&時刻をフォーマットできるのか、サンプルコードを交えて紹介します!

※フォーマットとは「2019/03/12」「2019年3月12日」「21:05」「21時5分」「PM9:05」のように日付&時刻の表示形式を変更することです。

もしMoment.jsをまだ導入されていない場合、まず以下記事をご確認ください。
www.yukibnb.com

 

Moment.jsで使用できる代表的なフォーマット一覧

サンプルコードを紹介する前にMoment.jsで使用できる代表的なフォーマットを紹介します。具体的な使い方は次の項目で紹介しますので、「こんなのもあるんだな」ぐらいでさらっと流し読みして頂いて大丈夫です。

 
現在時刻を「2019年3月9日(土) 21時5分47秒」と仮定し、フォーマットするとどのような表示になるかの例を見てみましょう。

日付

要素 内容
YYYY
2019
4桁の年数。
YY
19
2桁の年数。
MM
03
2桁の月数。01~12。
M
3
1桁もしくは2桁の月数。1~12。
DD
09
2桁の日数。01~31。
D
9
1桁もしくは2桁の日数。1~31。
Do
9th
日数を序数で。1st~31st。
DDDD
068
1年の中で何日目かを3桁で。001~365。1月1日が1。
DDD
68
1年の中で何日目かを1桁~3桁で。1~365。1月1日が1。
dddd
Saturday
曜日。Monday~Sunday。
ddd
Sat
3桁の曜日。Mon~Sun。
dd
Sa
2桁の曜日。Mo~Su。
d
6
曜日を数字で。0~6。日曜が0、月曜が1....土曜が6

大文字と小文字は区別されるのでご注意ください。
 

時刻

要素 内容
HH
21
2桁の時間。00~23。24時間表記。
H
21
1桁もしくは2桁の時間。0~23。24時間表記。
hh
09
2桁の時間。01~12。12時間表記。
h
9
1桁もしくは2桁の時間。1~12。12時間表記。
A
PM
AMもしくはPM。大文字表記。
a
pm
amもしくはpm。小文字表記。
mm
05
2桁の分。00~59。
m
5
1桁もしくは2桁の分。0~59。
ss
47
2桁の秒。00~59。
s
47
1桁もしくは2桁の秒。00~59。

大文字と小文字は区別されるのでご注意ください。

  

フォーマットのサンプルコード紹介

おまたせしました!ここからは実際にどのようにコードを書いてフォーマットを調整するかご紹介します。

ここでもわかりやすいように現在時刻を「2019年3月9日(土) 21時5分47秒」と仮定し、サンプルコードをご紹介します。

正しくフォーマットされているかは以下のようにLogger.log(formattedDate) でログを確認できます。

 

2019/03/09

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("YYYY/MM/DD");
Logger.log(formattedDate); //ログを確認してください。

 

2019/3/9

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("YYYY/M/D");
Logger.log(formattedDate); //ログを確認してください。

 

19/03/09

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("YY/MM/DD");
Logger.log(formattedDate); //ログを確認してください。

 

19/3/9

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("YY/M/D");
Logger.log(formattedDate); //ログを確認してください。

 

2019年3月9日

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("YYYY年M月D日");
Logger.log(formattedDate); //ログを確認してください。

 

3月9日

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("M月D日");
Logger.log(formattedDate); //ログを確認してください。

 

20190309

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("YYYYMMDD");
Logger.log(formattedDate); //ログを確認してください。

「経費精算_田中_20190309」などのようにファイル名に作成日を自動付与するコードに応用できます。

 

190309

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("YYMMDD");
Logger.log(formattedDate); //ログを確認してください。

「経費精算_田中_190309」などのようにファイル名に作成日を自動付与するコードに応用できます。

 

21:05:47

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("HH:mm:ss");
Logger.log(formattedDate); //ログを確認してください。

 

21:05

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("HH:mm");
Logger.log(formattedDate); //ログを確認してください。

 

21時05分47秒

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("HH時mm分ss秒");
Logger.log(formattedDate); //ログを確認してください。

 

21時5分47秒

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("H時m分s秒");
Logger.log(formattedDate); //ログを確認してください。

 

09:05:47 PM

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("hh:mm:ss A");
Logger.log(formattedDate); //ログを確認してください。

 

09:05 PM

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("hh:mm A");
Logger.log(formattedDate); //ログを確認してください。

 

09:05 pm

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("hh:mm a");
Logger.log(formattedDate); //ログを確認してください。

 

2019/03/09 21:05:47

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("YYYY/MM/DD HH:mm:ss");
Logger.log(formattedDate); //ログを確認してください。

 

2019年03月09日21時05分47秒

var date = Moment.moment(); //現在日時を取得
var formattedDate = date.format("YYYY年MM月DD日HH時mm分ss秒");
Logger.log(formattedDate); //ログを確認してください。

 

3月9日(土)

var date = Moment.moment(); //現在日時を取得

var dayArray = ["日","月","火","水","木","金","土"]; //解説1
var dayNum = date.format("d"); //曜日の番号。0~6。解説2
var day = dayArray[dayNum]; //曜日の番号を日~土に変換。解説3

var formattedDate = date.format("M月D日(" + day + ")");
Logger.log(formattedDate); //ログを確認してください。

曜日の要素「d」は日~土ではなく0~6の数字を表示するため少し工夫が必要です。上記コピペするだけで使用できますが念のため解説します。

①まず配列dayArrayを作成し日~土までの要素を代入します。配列の要素は「日」からにするのが鍵です。

②次に変数dayNumに曜日番号を代入します。3月9日は土曜なので、dayNumには「6」が代入されます。

③変数dayにはdayArray[dayNum]、つまり配列dayArrayのインデックス番号6番の「土」が代入されます。

ちなみに配列dayArrayの要素を「日曜日」「月曜日」...とすれば以下例のように表示することも可能です。
 

土曜日

var date = Moment.moment(); //現在日時を取得

var dayArray = ["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"];
var dayNum = date.format("d");
var day = dayArray[dayNum];

Logger.log(day); //ログを確認してください。

 

まとめ

今回はGASでMoment.jsライブラリーを使用し、日付や日時をフォーマットする方法を紹介しました。

記事では現在時刻をフォーマットする方法を紹介しましたが、スプレッドシートのセルに入力されている日付を取得してフォーマットするなど様々な活用方法があります。

次回記事ではMoment.jsを使用して日付や日時を加算・減算する方法を紹介します!


【次回記事はこちら!】
www.yukibnb.com