
photo credit: frankieleon Which chose you? via photopin (license)
みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
Google Apps Scriptで日付&時刻の便利ライブラリMoment.jsを使う方法についてシリーズでお伝えしています。
前回はコチラの記事でした。
破壊的なメソッドの注意点とcloneメソッドによる回避の方法についてお伝えしましたね。
今回は、Google Apps ScriptのMoment.jsライブラリのdiffメソッドを使って、二つの日時の差をとる方法です。
GASで実行時間を測定するときはもちろん、日数など単位が大きいときの差をとるのもスマートにできますよ。
では行ってみましょう!
Dateオブジェクトで日時の差をとる方法
Dateオブジェクトを使って日時の差をとる場合は、普通に引き算です。
とすれば、その差をとることができます。
例えば、とあるスクリプトの実行時間を測定したい場合は
function diffDate(){ var dateStart = new Date(); //処理 var dateEnd = new Date(); Logger.log(dateEnd-dateStart); }
とすればOKです。まあ、これはこれでいい感じです。
Dateオブジェクトで差をとるとミリ秒単位
しかし、Dateオブジェクトで差をとった結果はミリ秒表記になってしまうので、実行時間が長い場合はちょっと分かりづらい。
それで、実行時間を秒にする場合には、前述のスクリプトの5行目を
Logger.log((dateEnd-dateStart)/1000);
というように、1000分の1しますね。んー、まあいいんですが、ちょっとスマートではありません。
さらに、実行時間であれば1000分の1程度で済みますが、日単位にするときは
function diffDate(){ var date = new Date(); var date2 = new Date('2017/1/1'); Logger.log((date-date2)/(1000*60*60*24)); }
ということになります。とってもスマートではありません。
momentオブジェクトで日時の差をとる方法
momentオブジェクトで日時の差をとる場合は、diffメソッドを使います。
書き方はこうです。
単位ですが、以下の文字列またはShorthandで指定をします。省略をした場合はミリ秒となります。
単位 | 文字列 | Shorthand |
---|---|---|
年 | years | y |
月 | months | M |
週 | weeks | w |
日 | days | d |
時 | hours | h |
分 | minutes | m |
秒 | seconds | s |
ミリ秒 | milliseconds | ms |
浮動小数点にtrueを設定した場合は、浮動小数点で算出されます。falseを設定した場合、または省略をした場合は、小数点以下は切り捨てとなります。
momentオブジェクトで実行時間を測定する
momentオブジェクトで実行時間を測定する場合は、以下のようなスクリプトになります。
function diffMoment(){ var mStart = Moment.moment(); '処理 var mEnd = Moment.moment(); Logger.log(mEnd.diff(mStart)); }
秒単位かつ浮動小数点でログ出力したい場合は、5行目を
Logger.log(mEnd.diff(mStart, 's', true));
とします。なかなかスマートですよね。
momentオブジェクトで日数の差を求める
さらに、日数で差分をとるなど単位が大きくなるとdiffメソッドの本領発揮です。
日数単位であれば、第二引数を「d」に変えるだけ。
function diffMoment(){ var m = Moment.moment(); var m2 = Moment.moment('2017/1/1'); Logger.log(m.diff(m2, 'd')); }
これでOKです。とってもスマートですよね!
まとめ
Google Apps ScriptのMoment.jsライブラリのdiffメソッドで日時の差をスマートにとる方法についてお伝えしました。
GASは実行時間がシビアですからね…そして、単位が大きくなってもスマートに差分をとることができます。
オススメです!
連載目次:Google Apps ScriptでMoment.jsを使う
Google Apps Scriptでよく取り扱う日付と時刻。しかし、JavaScriptの標準Dateオブジェクトは扱いがなかなか難しいんですよね。その日時の操作をとっても簡単にすることができるライブラリ「Moment.js」の使い方について、解説をしていきます。- 日付&時刻の便利ライブラリ「Moment.js」をGoogle Apps Scriptで使う方法
- Google Apps ScriptでもMoment.jsで日付&時刻の書式フォーマットを簡単に指定
- Google Apps ScriptのMoment.jsで日時の各要素をGetとSetする方法
- GAS版Moment.jsライブラリで超簡単に日時の比較をする方法
- GASでMoment.jsライブラリを使って簡単に日時の計算をする方法
- GAS版Moment.jsの破壊的な日時計算メソッドの注意点とcloneメソッドによる回避
- GASでMoment.jsライブラリを使って超スマートに日時の差をとる方法