2017-02-13 7 views
2

Как обычно можно проверить, является ли случайная дата по крайней мере одним днем ​​(24 часа) в прошлом с помощью импульсов?Как проверить, является ли дата, по крайней мере, одним днем ​​в прошлом с моментами?

Что-то вроде:

const today = moment() 
const isAtLeastADayAgo = today.subtract(dateToCheck) > 1 // ?? 

ответ

3

Вы можете просто использовать isBefore

function isADayAgo(input){ 
 
    let yesterday = moment().subtract(1, 'd'); 
 
    return input.isBefore(yesterday); 
 
} 
 

 
const isAtLeastADayAgo = isADayAgo(moment()); 
 
console.log(isAtLeastADayAgo);
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

Или вы можете использовать diff ограничение детализации дней:

const today = moment(); 
 
const dateToCheck = moment().subtract(3, 'd'); 
 
const isAtLeastADayAgo = today.diff(dateToCheck, 'd') > 1; 
 
console.log(isAtLeastADayAgo);
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

1

я хотел бы предложить вам сделать это с простым яваскриптом Даты конструктору.

var today = new Date(); 
var pastDate = // some past date 
// 86400 seconds in 24hrs 
// getTime() will return you date in milliseconds 
if(86400000 < today.getTime()-pastDate.getTime()) will return true if past date is older than 24Hrs. 
+1

Голос от меня, но я бы назвал его как 'if (today - pastDate> 86400000)', хотя он может быть неточным на границе перехода на летнее время. Чтобы исправить это: 'if (pastDate RobG

+0

@RobG я просто последовал рекомендациям * eslint *, чтобы писать константу с правой стороны. BTW мне понравился ур ответ (чище). – sheelpriy