こんにちは!
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