moment.jsのメモ - 日時が特定の期間内かを調べる
moment.jsで、日時が特定の期間内かを調べるときのやり方。 isBetweenというのがあったので使ってみた。でもこれは、同じだとfalseになるらしいので、1ミリ秒引いてみた。
サンプル
const yyyymmddThh = (y, m, d, h) => { const y0 = ('000' + y).slice(-4); const m0 = ('0' + m).slice(-2); const d0 = ('0' + d).slice(-2); const h0 = ('0' + h).slice(-2); return y0 + m0 + d0 + 'T' + h0;};
const [year, month, date, hour] = [2019, 5, 19, 23];const targetDate = yyyymmddThh(year, month, date, hour);const dateFormat = 'YYYY-MM-DD HH:mm:ss';
const start = moment(targetDate);console.log('Start:', start.format(dateFormat));start.add(-1, 'ms');
const end = moment(targetDate).add(1, 'h');console.log('End :', end.format(dateFormat));
const testDate1 = moment('2019-05-19T23:00:00.00');const testDate2 = moment('2019-05-19T23:53:47.46');const testDate3 = moment('2019-05-20T00:00:00.00');
console.log(testDate1.isBetween(start, end));console.log(testDate2.isBetween(start, end));console.log(testDate3.isBetween(start, end));結果
Start: 2019-05-19 23:00:00End : 2019-05-20 00:00:00truetruefalseちなみに、 end = start.add(1, 'h') とかやると、start自体も更新されますので、startの1時間後の値がstartとendに入ります。そうしたくないときは、下記のように、クローンを作ります。
end = moment(start).add(1, 'h')http://momentjs.com/docs/#/parsing/moment-clone/ — momentjs.com