moment.js - 日付が今日、昨日、1週間以内、または2週間前かどうかをテストする 質問する

moment.js - 日付が今日、昨日、1週間以内、または2週間前かどうかをテストする 質問する

moment.js を使用して、日付が今日か、昨日か、1 週間前か、それより前 (2 週間以上前) かを確認しようとしています。

最初の 2 つのケースではすでにこれを実行しました。

var today = moment().startOf('day');
var yesterday = moment().subtract(1, 'days').startOf('day');

if (moment(localTime).isSame(today, 'd')) // today
    // do something
if (moment(localTime).isSame(yesterday, 'd')) // yesterday
    // do something

あれは正しいですか?

しかし、日付が 1 週間前かそれより古い (例: 2 週間前) かどうかをどのように確認すればよいでしょうか?

ベストアンサー1

役に立つかもしれないものは次のとおりです:

var REFERENCE = moment("2015-06-05"); // fixed just for testing, use moment();
var TODAY = REFERENCE.clone().startOf('day');
var YESTERDAY = REFERENCE.clone().subtract(1, 'days').startOf('day');
var A_WEEK_OLD = REFERENCE.clone().subtract(7, 'days').startOf('day');

function isToday(momentDate) {
    return momentDate.isSame(TODAY, 'd');
}
function isYesterday(momentDate) {
    return momentDate.isSame(YESTERDAY, 'd');
}
function isWithinAWeek(momentDate) {
    return momentDate.isAfter(A_WEEK_OLD);
}
function isTwoWeeksOrMore(momentDate) {
    return !isWithinAWeek(momentDate);
}

console.log("is it today? ..................Should be true: "+isToday(moment("2015-06-05")));
console.log("is it yesterday? ..............Should be true: "+isYesterday(moment("2015-06-04")));
console.log("is it within a week? ..........Should be true: "+isWithinAWeek(moment("2015-06-03")));
console.log("is it within a week? ..........Should be false: "+isWithinAWeek(moment("2015-05-29")));
console.log("is it two weeks older or more? Should be false: "+isTwoWeeksOrMore(moment("2015-05-30")));
console.log("is it two weeks older or more? Should be true: "+isTwoWeeksOrMore(moment("2015-05-29")));

チェックJSFiddle デモより多くのテストを実行することで、必要に応じて正確なケースに合わせて調整できます。

おすすめ記事