Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
132
rated 0 times [  137] [ 5]  / answers: 1 / hits: 66673  / 9 Years ago, fri, june 5, 2015, 12:00:00

I am trying with moment.js to know if a date is today, yesterday, 1 week ago, or older (2 weeks ago or more).



I already done that for the first two cases:



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


Is that correct?



However, how could I check if a date is a week ago, or older (eg. two weeks ago)?


More From » date

 Answers
0

Here's something that can be useful:



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)));


Check a JSFiddle demo with more tests, so you can tweak for your exact case, if needed.


[#66311] Wednesday, June 3, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
alanisannettep

Total Points: 695
Total Questions: 96
Total Answers: 91

Location: Australia
Member since Sat, May 27, 2023
1 Year ago
;