Moment.js检查日期是今天

Asa*_*ter 35 javascript date momentjs

如何检查日期实际上是今天(同一天)而不是一天中的小时数之间的差异?

我有三个时间戳作为例子,一个是今天(2014年7月22日),另外两个是昨天(2014年7月21日)

1406019110000 // today
1405951867000 // yesterday
1405951851000 // yesterday
Run Code Online (Sandbox Code Playgroud)

我试过这个,但都回归假:

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

Vas*_*min 98

您可以使用isSame(),将粒度限制为一天:

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
}
Run Code Online (Sandbox Code Playgroud)

  • 很酷,我不知道你可以指定isSame()的粒度.这比我的解决方案好一点.另外,你复制了我的代码:p (3认同)
  • 算了,我回答了自己的问题.它足够聪明,知道它的不同.时刻("2013-03-10 2:30").isSame("2013-04-10 2:30","day")= false (3认同)
  • 如果日期与上个月相同,会发生什么情况? (2认同)

Cam*_*ron 16

您可以一起使用startOfisSame方法来实现您的目标.

startOf('day')在一个瞬间对象上运行将设置那个时刻 - 你猜对了 - 它发生的那一天的开始.如果使用此方法转换每个时间戳,则可以使用它们轻松地将它们相互比较isSame().

例如:

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
}
Run Code Online (Sandbox Code Playgroud)

  • 实际上这是危险的,startOf会改变对象的时刻,所以如果你在检查它是否相同后去使用它,它总会给你12:00. (4认同)
  • 好点@Ben,Vasyl Demins是我答案的更好变体,应该是"正确"的答案. (4认同)

小智 12

你可以试试这个

moment().isSame(moment(timestamp), 'day')
Run Code Online (Sandbox Code Playgroud)