タイトルの通り、GAS版Moment.jsを使ってみて分かった事まとめです。
使用バージョンは9です(執筆時点での最新Ver.)
追記:Moment.jsはレガシープロジェクトになりました
Moment.js for Apps ScriptのおおもとであるJSのMoment.jsは2020年9月をもって新機能などの開発は廃止となりました。 詳しくはこちら
今後新規開発するときはあまりMoment.jsを使わない方がいいかもしれません。
JSとしてはLuxonというのが後継となるそうです。
Luxon for Apps Scriptとかできるといいですね!
Moment.jsとは
momentオブジェクトの各要素を使って、
- 日付をフォーマットして出力
- 日付の計算・比較
などといった事ができる便利ライブラリ
ライブラリのインポート
スクリプトエディタで[リソース] > [ライブラリ]を押下。
表示されるダイアログのAdd a libraryの所に"MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48"を入力すると使えるようになります。
使い方
とりあえず実行例をもくもくと挙げていきます。
今回の比較では'days'しか挙げませんが、'years','months','days','hours','minutes','seconds'とかが使えるはずです(確認してません)
※Logger.log()を省略してます
Moment.moment('2020/03/03'); //momentオブジェクト生成
Moment.moment('2020/03/03').format('YYYY年MM月DD日'); //'2020年03月03日'
Moment.moment('2020/03/10').startOf('month').format(); //月のはじめ2020-03-01T00:00:00+09:00
Moment.moment('2020/03/10').endOf('month').format(); //月のおわり
Moment.moment('2020/03/10').month(); //何月か 3
Moment.moment('2020/03/10').date(); //何日か 10
var start = Moment.moment('2020/03/01');
var end = Moment.moment('2020/03/08');
end.diff(start, "days"); //日付差 7.0
//以下Ver.8で動かない可能性あり
end.isBefore(start, "days"); //指定した日より前かどうか。つまりif(end < start) 結果はfalse
end.isAfter(start,"days"); //if(end > start) true
end.isSame(start,"days"); //同じ日かどうか
本家Moment.jsでは使えるけどGAS版では使えないもの
以下は使えませんでした。
- isSameOrBefore
- isSameOrAfter