如何获得现在和下周五之间的时差

时间:2019-05-29 08:54:42

标签: javascript momentjs

我想使用momentjs获得从现在到下一个星期五18:00(周末)之间的小时数差异,我尝试过这样做,但是不起作用:

public getWeekend() {
    const nextFriday = moment().weekday(4)
    nextFriday.hours(18) // Weekend time: 18:00
    nextFriday.minutes(0)
    nextFriday.seconds(0)

    const diff = moment(nextFriday.diff(moment()))
    console.log(diff.days())
    if (diff.days() * 24 + diff.hours() <= 99) {
      return nextFriday.toString()
    } else {
      return 0
    }
  }
}

console.log(diff.days())打印6天,而我们是星期三

6 个答案:

答案 0 :(得分:2)

尝试一下:

function getWeekend() {

    const nextFriday = moment().weekday(4)
        nextFriday.hours(18) // Weekend time: 18:00
        nextFriday.minutes(0)
        nextFriday.seconds(0)

        const diffHours = moment.duration(nextFriday.diff(moment())).asHours()
        console.log(`${diffHours} hours`) // 31.7 hours
        if (diffHours <= 99) {
          return nextFriday.toString()
        } else {
          return 0
        }
      }

答案 1 :(得分:1)

我建议使用moment

const diff = moment.duration(nextFriday.diff(moment()))
const deepDiff = diff.format("D [day], H [hour and] m [min]")

答案 2 :(得分:0)

更新,现在完全正确。

首先,星期五实际上具有序列号5,因此请改用4。 const nextFriday = moment().weekday(5)-今天是正确的星期五。

下一个重要的事情是默认情况下将默认为“星期五”,这意味着可以选择已经过去的星期五(例如,如果今天是星期六)。在这种情况下,我们只需要增加一个星期。

这是工作代码段:

function getWeekend() {
    const today = moment();
    const friday = moment().weekday(5);
    // check if wee need to add one week in case of previous Friday selected
    if (friday < today) { 
        friday.add(1, 'weeks');
    }
    friday.hours(18) // Weekend time: 18:00
    friday.minutes(0)
    friday.seconds(0)
    return friday.diff(moment(), 'hours');
}

const hoursToFriday = getWeekend();
console.log(`Friday 18:00 will be in ${hoursToFriday} hours`);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>

答案 3 :(得分:0)

https://jsfiddle.net/7ehoq06n/

如果您仅致电moment().weekday(5),它将转到“本周”的星期五,这意味着如果您在星期六,它将转到YESTERDAY。

如果您想在下一个星期五永远在未来,请使用以下方法:

var today = moment();
var friday = moment().weekday(5);
if (friday < today) {
    friday.add(1, 'weeks');
}

答案 4 :(得分:0)

Moment.js具有内置函数.fromNow(),它返回给定时间与本地时间之间的时间。因此,您需要更改的唯一两行是.weekday(4),因为星期五是weekday(5)。并调用.fromnow()函数。

console.log(getWeekend());
function getWeekend() {
    const nextFriday = moment().weekday(5);
    nextFriday.hours(18); // Weekend time: 18:00
    nextFriday.minutes(0);
    nextFriday.seconds(0);
    return nextFriday.fromNow();
}
<script src="https://momentjs.com/downloads/moment.min.js"></script>

请注意,fromNow将返回一个字符串Moment.js,它对此具有内置解决方案。

答案 5 :(得分:0)

您可以使用(now - next Friday) / 60*60*1000方法进行时差计算,尝试一下:

const nextFriday = moment().day(5)
var hours = Math.abs(new Date() - nextFriday) / 36e5; 
console.log(hours);

注意:36e5是60 * 60 * 1000的科学计数法