Используйте момент.js, чтобы выяснить, была ли отметка времени Unix в течение последней недели - PullRequest
0 голосов
/ 01 октября 2018

Как использовать метку времени Unix, чтобы определить, произошло ли событие в течение последней недели?

Я пытался

moment().subtract('weeks', 1).unix()<item.start

, но он возвращает неожиданные результаты.Большое спасибо

edit: большое спасибо за вопрос. Вот пример моего ответа

1537858386 1540197758000

Ответы [ 4 ]

0 голосов
/ 02 октября 2018

Как сказал @ be-ndee, это всего лишь миллисекунды против секунд, поэтому я просто отредактировал его до

moment (). Subtract ('week', 1) .unix ()

0 голосов
/ 02 октября 2018

Вы можете проверить этот ответ для проверки диапазона дат

Вы можете использовать один из moment plugin -> moment-range для работы с диапазоном дат:

 var startDate = new Date(2013, 1, 12)   , endDate   = new Date(2013,
 1, 15)   , date  = new Date(2013, 2, 15)   , range =
 moment().range(startDate, endDate);

 range.contains(date); // false
0 голосов
/ 02 октября 2018

Будет использоваться moment.diff функция

Выполните следующие действия

  1. Преобразование временной метки Unix в объект момента
  2. Дата форматирования
  3. использовать moment.diff

    function dateDiff (date) {
        // date is unix timestamp date
        let d = moment(date);
    
        if ( d.isValid() ) {
            d.format("YYYY-MM-DD");
    
            // moment() gives current date-time
            return moment().diff(d, 'weeks', true);
            // If past date then result will be positive if future date then negative.
        }
        else 
           return null;
    }
    
    console.log( dateDiff( 1519945200000 ) );  // 30.648079404761905   // 30 weeks ago
    console.log( dateDiff( 1534395200000 ) );  // 6.755883640873016   // 6 weeks ago
    console.log( dateDiff( 1529945200000 ) );  // 14.113687873677248   // 14 weeks ago
    console.log( dateDiff( 1541945200000 ) );  // -5.7275819675925925  // 5 weeks in future
    
0 голосов
/ 02 октября 2018

Вы можете создать момент времени, который представляет наименьшее действительное значение, как вы делали раньше.Когда у вас есть этот момент времени, вы можете проверить с помощью минут, если данная дата старше.

const weekAgo = moment().subtract(1, 'weeks') // This is the time to check

const ts = 1519945200000 // any unix timestamp. This is 2018-03-01
const m1 = moment(ts) // Use a unixtimestamp to create a moment object

const m2 = moment().subtract(8, 'days') // further test data
const m3 = moment().subtract(6, 'days') // further test data

console.log(weekAgo.isBefore(m1)) // true
console.log(weekAgo.isBefore(m2)) // true
console.log(weekAgo.isBefore(m3)) // false
...