Moment.js用星期和工作日定义的两个时刻的差值会得到错误的结果

Moment.js diff of two moments defined by week and weekday gives wrong result

本文关键字:时刻 两个 结果 错误 js 工作日 Moment 定义      更新时间:2023-09-26

我想计算一个时刻(itemMoment)和现在(nowMoment)之间的差值,由工作日、小时和分钟定义。如果itemMoment在nowMoment (diff <0)我想添加一个星期并再次计算差异,但是添加一个星期(在我的代码中是week: week + 1)不知何故不会改变差异,我仍然得到负差异。

这是我第一次使用moment.js库,所以可能我不知道如何正确使用它。如果有经验的人能帮上忙,那就太好了。

var now = moment();
  var year = now.year();
  var week = now.week();
  var weekday = now.weekday();
  var hour = now.hour();
  var minute = now.minute();
var itemMoment = moment({
                                day: item.weekday,
                                hour: item.hour,
                                minute: item.minute
                            });
    var nowMoment = moment({
                                day: weekday,
                                hour: hour,
                                minute: minute
                            });
    if (itemMoment.diff(nowMoment) > 0) {
        item.date = moment({
                            year: year, 
                            week: week, 
                            weekday: item.weekday, 
                            hour: item.hour, 
                            minute: item.minute
                        });
        diff = itemMoment.diff(nowMoment);
    }
    else {
        if (week == 51) {
            week = -1;
            year = year + 1
        }
        item.date = moment({
                            year: year, 
                            week: week + 1, 
                            weekday: item.weekday, 
                            hour: item.hour, 
                            minute: item.minute
                        });
        diff = item.date.diff(now);

您可以使用isBefore()或isAfter()进行比较。http://momentjs.com/docs//查询/

if (itemMoment.isBefore(nowMoment)) {

然后你可以这样操作:http://momentjs.com/docs/#/manipulating/

item.date = itemMoment.add('weeks', 1);