GASでMoment.jsライブラリを使って簡単に日時の計算をする方法

★気に入ったらシェアをお願いします!


date-calendar

photo credit: superscheeli calendar via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Google Apps Scriptで日付&時刻の便利ライブラリMoment.jsを使う方法についてお伝えしています。

前回の記事はこちらです。

GAS版Moment.jsライブラリで超簡単に日時の比較をする方法
Google Apps Scriptで日付&時刻の便利ライブラリMoment.jsを使う方法についてお伝えしています。今回はisSame、isBefore、isAfterメソッドで日時の比較をする方法です。

Moment.jsで二つの日時について比較をする方法についてお伝えしました。

今回は、加算と減算つまり日時の計算をしていきたいと思います。

Google Apps ScriptのMoment.jsライブラリで簡単に日時の計算をする方法です。

では、行ってみましょう!

Dateオブジェクトの加算・減算

Dateオブジェクトで日時を加算するときは、このように書いていました。

  1. 元となるDateオブジェクトdateからgetMonthで「月」を取得
  2. 取得した「月」に1をプラスしたものをsetMonthでdateに再セット

こんな流れですね。

同様に、Dateオブジェクトで日時を減算する場合は

  1. 元となるDateオブジェクトdateからgetDateで「日」を取得
  2. 取得した「日」に1をプラスしたものをdateにsetDateで再セット

という流れです。

いずれもわからなくはないですが、日時の加算・減算なんてGASでは山ほど使いそうですから、わざわざgetしたり、setしたりせずに、スパっと書きたいものです。

また、加算・減算の対象となる要素ごとに、getFullYear、getMonth、getDate、…といったようにメソッドが変更になるのも煩わしいです。

addメソッドで日時を加算する

以上のような悩みもMoment.jsライブラリを使うことでスパっと解決することができます。

momentオブジェクトで日時を加算する場合はaddメソッドを使い、次のように書きます。

momentオブジェクト.add(値, 要素を表す文字列)

例えば、先ほどの加算の例では

と書きます。簡単ですね!

要素を表す文字列とShorthand

要素を表す文字列Shorthandと呼ばれる短縮文字列でも表現できまして

とすることもできます。

以下、文字列とShorthandを表にまとめますので、お好きなほうを使って下さいね。

要素 要素を表す文字列 Shorthand
years y
四半期 quarters Q
months M
weeks w
days d
hours h
minutes m
seconds s
ミリ秒 milliseconds ms

subtractメソッドで日時を減算する

では、続いて減算を紹介しますね。

momentオブジェクトで日時を減算する場合はsubtractメソッドを使い、次のように書きます。

momentオブジェクト.subtract(値, 要素を表す文字列)

使い方はaddメソッドとほぼ同じですね。要素を表す文字列もShorthandも同様です。

例えば、冒頭の減算の例は

またはShorthandを用いて

と書くことができます。

月末の日付に加算・減算をした場合

例えば、月を加算したとき、または減算したときに、計算結果の月の日数が31でない月の場合は、元の日付が存在していないケースがあります。

例えば2017/1/31にひと月加算した場合ですね。

この場合、どうなるかと言いますと

このようにいずれも月末日に揃います。

この特性も覚えておくとなかなか良さそうですよ。

まとめ

以上、Google Apps ScriptのMoment.jsライブラリで簡単に日時の計算をする方法です。

addメソッド、subtractメソッドの二つと、各要素の文字列またはShorthandさえ押さえてしまえば、日時の加減算もおてのものです。

いや~、Moment.jsライブラリさまさまですね。

さて、実はaddメソッド、subtractメソッドは、元のオブジェクト自体を変更してしまうという特性がありまして、次回はその点についてお伝えできればと思います。

GAS版Moment.jsの破壊的な日時計算メソッドの注意点とcloneメソッドによる回避
Google Apps Scriptで日付&時刻のライブラリMoment.jsを紹介しています。日時計算の際に元のmomentオブジェクトが変更されてしまうので、cloneメソッドで回避する方法をお伝えします。

どうぞお楽しみに!

連載目次:Google Apps ScriptでMoment.jsを使う

Google Apps Scriptでよく取り扱う日付と時刻。しかし、JavaScriptの標準Dateオブジェクトは扱いがなかなか難しいんですよね。その日時の操作をとっても簡単にすることができるライブラリ「Moment.js」の使い方について、解説をしていきます。
  1. 日付&時刻の便利ライブラリ「Moment.js」をGoogle Apps Scriptで使う方法
  2. Google Apps ScriptでもMoment.jsで日付&時刻の書式フォーマットを簡単に指定
  3. Google Apps ScriptのMoment.jsで日時の各要素をGetとSetする方法
  4. GAS版Moment.jsライブラリで超簡単に日時の比較をする方法
  5. GASでMoment.jsライブラリを使って簡単に日時の計算をする方法
  6. GAS版Moment.jsの破壊的な日時計算メソッドの注意点とcloneメソッドによる回避
  7. GASでMoment.jsライブラリを使って超スマートに日時の差をとる方法