Yuki's bnb blog

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

【簡単!GAS】Moment.jsで日付&時刻を楽々計算しよう

f:id:yukibnb:20190721192227p:plain

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


前回Moment.jsを使ってGoogle Apps Scriptで簡単に日付や時刻をフォーマットする方法を紹介しました。
www.yukibnb.com

今回はMoment.jsを使って日付や時刻を計算する方法を紹介します。

基準となる日時の〇日後、〇カ月後、〇時間後、〇分前などを簡単に計算できます。

前半部分では計算方法やポイントを紹介し、後半部分では具体的な使用例を紹介します。

ではさっそく見ていきましょう!

 

Moment.jsでの計算方法 & 使用できる要素

計算方法はシンプル! add & subtract

まず先にサンプルコードを確認しましょう。もし今日から5日後の日付を計算したい場合、以下のようにコードを書きます。

var date01 = Moment.moment(); //現在日時
var date02 = date01.add(5,"days"); //現在日時 + 5日

 
今日から2ヵ月前の日付を計算したい場合、以下のようにコードを書きます。

  var date01 = Moment.moment(); //現在日時
  var date02 = date01.subtract(2,"months"); //現在日時 - 2ヵ月

 
先にサンプルコード見るとイメージしやすいですね!Moment.jsでは加算・減算したい値と要素(days, monthsなど)を指定するだけで簡単に計算できます。
 

公式

《加算したい時》
momentオブジェクト.add(値, "要素");
 
《減算したい時》
momentオブジェクト.subtract(値, "要素");

上記サンプルコードではdaysとmonthsの要素を使用しましたが、他にもまだ要素はあります。まとめて一覧で紹介します。

 

使用できる要素一覧

計算に使用できる要素はこれだけあります。

要素 簡略表記 内容
years
y
quarters
Q
四半期
months
M
weeks
w
days
d
hours
h
minutes
m
seconds
s
milliseconds
ms
ミリ秒

ちなみにmonthsやdaysなど要素が長くて書くのが面倒な場合、代わりに簡略表記を使用できます

例えば冒頭で紹介した今日から5日後の日付を計算するコードは以下のように書くこともできます。

var date01 = Moment.moment(); //現在日時
var date02 = date01.add(5,"d"); //現在日時 + 5日

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

 

計算後の日時をフォーマットしたい場合

前回の記事でMoment.jsを活用した日時のフォーマット方法を紹介しました。
yukibnb.hateblo.jp


記事内では現在日時のフォーマット方法のみ紹介しましたが、今回のように計算後の日時をフォーマットすることももちろん可能です。

例えば今日から5日後の日付を『〇〇〇〇年〇月〇日』形式で表示したい場合、以下のようなコードになります。

var date01 = Moment.moment(); //現在日時
var date02 = date01.add(5, "days"); //現在日時 + 5日
var formattedDate = date02.format("YYYY年M月D日"); //フォーマット
Logger.log(formattedDate); //ログを確認してください

 
次はいよいよ具体的な使用例をサンプルコードを交えて紹介します!

 

加算のサンプルコード紹介

紹介した要素とaddを用いて、実際にどのような活用方法があるのかを紹介します。

この記事だけでは書ききれませんが活用のコツをつかんで頂けると思います!

なお活用例は現在日時を基準に計算しています。

翌日 (1日後)

var date01 = Moment.moment(); //現在日時
var date02 = date01.add(1, "days"); //現在日時 + 1日

★ポイント★
値は1でも複数形のdaysを使います。 (monthsやyearsなど他の要素も同様)

 

1ヵ月後

var date01 = Moment.moment(); //現在日時
var date02 = date01.add(1, "months"); //現在日時 + 1ヵ月

★ポイント★
仮に現在日時(date01)が3月31日の場合、計算後の日時(date02)は4月30日となります。4月31日という日付は存在しないため。

 
実際に以下コードのログを確認して頂ければわかりやすいです。

var date01 = Moment.moment("3月31日","M月D日");//基準日を3月31日に設定
var date02 = date01.add(1, "months"); //3月31日 + 1ヵ月
var formattedDate = date02.format("M月D日"); //フォーマット
Logger.log(formattedDate); //ログを確認してください

 

4年後

var date01 = Moment.moment(); //現在日時
var date02 = date01.add(4, "years"); //現在日時 + 4年

 

8時間後

var date01 = Moment.moment(); //現在日時
var date02 = date01.add(8, "hours"); //現在日時 + 8時間

 

90分後

var date01 = Moment.moment(); //現在日時
var date02 = date01.add(90, "minutes"); //現在日時 + 90分

 

1ヵ月と2週間後

//現在日時
var date01 = Moment.moment();

//現在日時 + 1ヵ月と2週間
var date02 = date01.add(1, "months").add(2, "weeks"); 
//現在日時
var date01 = Moment.moment();

//現在日時 + 1ヵ月と2週間
var date02 = date01.add({months: 1, weeks: 2}); 


★ポイント★
二つの要素を組み合わせる場合、上記2通りの方法があります。
どちらの記述でも大丈夫ですが、括弧内にオブジェクトを記入する後者の方が見た目はすっきりします。

 

減算のサンプルコード紹介

減算の基本的な書き方は加算と同じです。addをsubtractに置き換えればOKですが、念のためいくつか具体例を紹介します。

昨日 (1日前)

var date01 = Moment.moment(); //現在日時
var date02 = date01.subtract(1, "days"); //現在日時 - 1日

 

1ヵ月前

var date01 = Moment.moment(); //現在日時
var date02 = date01.subtract(1, "months"); //現在日時 - 1ヵ月

★ポイント★
仮に現在日時(date01)が3月31日の場合、計算後の日時(date02)は2月28日となります。2月31日という日付は存在しないため。

 
実際に以下コードのログを確認して頂ければわかりやすいです。

var date01 = Moment.moment("3月31日","M月D日");//基準日を3月31日に設定
var date02 = date01.subtract(1, "months"); //3月31日 - 1ヵ月
var formattedDate = date02.format("M月D日"); //フォーマット
Logger.log(formattedDate); //ログを確認してください

 

6時間と30分前

//現在日時
var date01 = Moment.moment();

//現在日時 - 6時間と30分
var date02 = date01.subtract(6, "hours").subtract(30, "minutes"); 
//現在日時
var date01 = Moment.moment();

//現在日時 - 6時間と30分
var date02 = date01.subtract({hours: 6, minutes: 30}); 

 

まとめ

今回はGASでMoment.jsライブラリーを使用し、日付や時刻を簡単に計算する方法を紹介しました。

コードの見た目もシンプルでわかりやすいのですぐ活用できて便利です。

なお今回は基準となる日時に対して値と要素を加算・減算する方法を紹介しましたが、次回記事では二つの日時の差分を計算する方法を紹介します。

例えば『2019年3月17日から2019年9月30日までの日数』という計算です。


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