Moment.js Check a date is today

2019-02-02 20:53发布

问题:

How do I check a date is actually today (the same date) rather than the difference between hours in a day?

I have three timestamps as examples, one is today (22/07/14) and the other two are yesterday (21/07/14)

1406019110000 // today
1405951867000 // yesterday
1405951851000 // yesterday

I have tried this but all return false:

timestamp = moment.tz(timestamp, tz.name());    
var today = moment('DD/MM/YYYY').isAfter(timestamp, 'DD/MM/YYYY');
console.log(today);

回答1:

You can use isSame(), limiting the granularity to a day:

var today = moment(1406019110000);
var yesterday = moment(1405951867000);

if (today.isSame(yesterday, 'd')) {
    // They are on the same day
} else {
    // They are not on the same day
}


回答2:

You can use the startOf and isSame methods together to achieve your goal here.

Running startOf('day') on a moment object will set that moment to - you guessed it - the start of the day it occurs on. If you convert each of your timestamps using this method you can easily compare them to one another using isSame().

For example:

var today = moment(1406019110000);
var yesterday = moment(1405951867000); 

if (today.startOf('day').isSame(yesterday.startOf('day'))) {
    // They are on the same day
} else {
    // They are not on the same day
}


回答3:

You can try this

moment().isSame(moment(timestamp), 'day')


回答4:

You can try this,

var today = 1406019110000; // today
var yesterday = 1405951867000; // yesterday

checkToday(today);
checkToday(yesterday);

function checkToday(timestamp)
{
    if (moment(timestamp).format('DD/MM/YYYY') == moment(new Date()).format('DD/MM/YYYY'))
        alert('true');
    else
        alert("false");
}

Here is the demo