みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
Google Apps Scriptで日付&時刻の便利ライブラリMoment.jsを使う方法についてお伝えしています。
前回の記事はこちらです。
Moment.jsで二つの日時について比較をする方法についてお伝えしました。
今回は、加算と減算つまり日時の計算をしていきたいと思います。
Google Apps ScriptのMoment.jsライブラリで簡単に日時の計算をする方法です。
では、行ってみましょう!
Dateオブジェクトの加算・減算
Dateオブジェクトで日時を加算するときは、このように書いていました。
var date = new Date('2017/2/1'); var date1 = new Date(date.setMonth(date.getMonth()+1)); //2017/3/1
- 元となるDateオブジェクトdateからgetMonthで「月」を取得
- 取得した「月」に1をプラスしたものをsetMonthでdateに再セット
こんな流れですね。
同様に、Dateオブジェクトで日時を減算する場合は
var date = new Date('2017/2/1'); var date2 = new Date(date.setDate(date.getDate()-3)); //2017/1/29
- 元となるDateオブジェクトdateからgetDateで「日」を取得
- 取得した「日」に1をプラスしたものをdateにsetDateで再セット
という流れです。
いずれもわからなくはないですが、日時の加算・減算なんてGASでは山ほど使いそうですから、わざわざgetしたり、setしたりせずに、スパっと書きたいものです。
また、加算・減算の対象となる要素ごとに、getFullYear、getMonth、getDate、…といったようにメソッドが変更になるのも煩わしいです。
addメソッドで日時を加算する
以上のような悩みもMoment.jsライブラリを使うことでスパっと解決することができます。
momentオブジェクトで日時を加算する場合はaddメソッドを使い、次のように書きます。
例えば、先ほどの加算の例では
var m = Moment.moment('2017/2/1') var m1 = m.add(1,'months'); //2017/3/1
と書きます。簡単ですね!
要素を表す文字列とShorthand
要素を表す文字列はShorthandと呼ばれる短縮文字列でも表現できまして
var m = Moment.moment('2017/2/1') var m1 = m.add(1,'M'); //2017/3/1
とすることもできます。
以下、文字列とShorthandを表にまとめますので、お好きなほうを使って下さいね。
要素 | 要素を表す文字列 | Shorthand |
---|---|---|
年 | years | y |
四半期 | quarters | Q |
月 | months | M |
週 | weeks | w |
日 | days | d |
時 | hours | h |
分 | minutes | m |
秒 | seconds | s |
ミリ秒 | milliseconds | ms |
subtractメソッドで日時を減算する
では、続いて減算を紹介しますね。
momentオブジェクトで日時を減算する場合はsubtractメソッドを使い、次のように書きます。
使い方はaddメソッドとほぼ同じですね。要素を表す文字列もShorthandも同様です。
例えば、冒頭の減算の例は
var m = Moment.moment('2017/2/1') var m2 = m.subtract(3,'days'); //2017/1/29
またはShorthandを用いて
var m = Moment.moment('2017/2/1') var m2 = m.subtract(3,'d'); //2017/1/29
と書くことができます。
月末の日付に加算・減算をした場合
例えば、月を加算したとき、または減算したときに、計算結果の月の日数が31でない月の場合は、元の日付が存在していないケースがあります。
例えば2017/1/31にひと月加算した場合ですね。
この場合、どうなるかと言いますと
var m = Moment.moment('2017/1/31') var m1 = m.add(1,'months'); //2017/2/28
var m = Moment.moment('2017/3/31') var m2 = m.subtract(1,'months'); //2017/2/28
このようにいずれも月末日に揃います。
この特性も覚えておくとなかなか良さそうですよ。
まとめ
以上、Google Apps ScriptのMoment.jsライブラリで簡単に日時の計算をする方法です。
addメソッド、subtractメソッドの二つと、各要素の文字列またはShorthandさえ押さえてしまえば、日時の加減算もおてのものです。
いや~、Moment.jsライブラリさまさまですね。
さて、実はaddメソッド、subtractメソッドは、元のオブジェクト自体を変更してしまうという特性がありまして、次回はその点についてお伝えできればと思います。
どうぞお楽しみに!