Quantcast
Channel: いつも隣にITのお仕事
Viewing all articles
Browse latest Browse all 2085

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

$
0
0
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オブジェクトで日時を加算するときは、このように書いていました。

var date = new Date('2017/2/1');
var date1 = new Date(date.setMonth(date.getMonth()+1)); //2017/3/1

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

こんな流れですね。

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

var date = new Date('2017/2/1');
var date2 = new Date(date.setDate(date.getDate()-3)); //2017/1/29

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

という流れです。

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

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

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

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

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

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メソッドを使い、次のように書きます。

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メソッドは、元のオブジェクト自体を変更してしまうという特性がありまして、次回はその点についてお伝えできればと思います。

どうぞお楽しみに!

連載目次: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ライブラリを使って簡単に日時の計算をする方法

Viewing all articles
Browse latest Browse all 2085

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>