我想使用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天,而我们是星期三
答案 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的科学计数法