Moment.js は、日付時刻の操作を行なったり整形したりがとても楽になるJavaScriptライブラリです。
今回はMoment.jsの拡張ライブラリである、moment-range を使って、日付が範囲内であるかを調べたいと思います。
moment-range
moment-range を使うことで、日付が範囲内であるかを調べることが出来ます。
インストール
npm、bowerでインストールすることが出来ます。Moment.jsと一緒にインストールしてください。
npmの場合
npm install moment
npm install moment-range
bowerの場合
bower install moment
bower install moment-range
使い方
日付が範囲内であるかどうかは、moment-rangeのrange(範囲指定)
とcontains(調べる対象)
で調べることが出来ます。
例えば…今日2016年2月3日( 節分 )は、
- A.2015年12月1日から2016年3月1日の間かどうか
- B.2016年3月1日から2016年4月1日の間かどうか
を調べたいとします。
日付が範囲内であるかを調べるソース
var moment = require("moment");
require("moment-range");
// 2016年の節分の日をセット(以下のどれかで)
// 今日が2016年2月3日だったらこれでOK
// var setsubunDate = moment();
// Dateオブジェクト(第二引数は0が1月になります)
// var setsubunDate = moment(new Date(2016, 1, 3));
// Arrayはすっきりして便利
var setsubunDate = moment([2016, 1, 3]);
// A rangeで範囲を指定
var rangeA = moment.range(new Date(2015, 11, 1), new Date(2016, 2, 1));
// B rangeで範囲を指定
var rangeB = moment.range(new Date(2016, 2, 1), new Date(2016, 3, 1));
// A containsで日付が範囲内かどうかを調べる
console.log(rangeA.contains(setsubunDate)); // True
console.log(rangeA.contains(setsubunDate.toDate())); // これもTrue (moment.toDate()でDate型取得)
// B containsで日付が範囲内かどうか調べる
console.log(rangeB.contains(setsubunDate)); // False
console.log(rangeB.contains(setsubunDate.toDate())); // これもFalse (moment.toDate()でDate型取得)
今日2016年2月3日( 節分 )は、
- A.2015年12月1日から2016年3月1日の間である=True
- B.2016年3月1日から2016年4月1日の間ではない=False
ということが分かりました。
簡単でしょ!
moment-range を使うことで簡単に日付が範囲内であるかを調べることが出来ました。moment-rangeには他にもいろんな機能がありそうなので是非挑戦してみてくださ〜い(僕も挑戦します!)