Javascript 使用MomentJS确定日期是今天还是过去?

Javascript 使用MomentJS确定日期是今天还是过去?,javascript,momentjs,Javascript,Momentjs,我正在构建一个只显示当前月份的迷你日历,我已经了解了如何绘制日历,下面是代码: 代码: var month = moment(), index = 0, maxDay = month.daysInMonth(), start = month.startOf("month"), offset = (start.isoWeekday() - 1 + 7) % 7; // start from monday var week = []; // holds the

我正在构建一个只显示当前月份的迷你日历,我已经了解了如何绘制日历,下面是代码:

代码:

var month  = moment(),
    index  = 0,
    maxDay = month.daysInMonth(),
    start  = month.startOf("month"),
    offset = (start.isoWeekday() - 1 + 7) % 7; // start from monday

var week = []; // holds the weeks
var days = []; // holds the days

do {

  var dayIndex = index - offset;

  if(dayIndex >= 0 && dayIndex < maxDay){
    days.push({
              number: dayIndex + 1,
              isPast: null,  // stuck here boolean
              isToday: null  // stuck here boolean 
     })
  }

  if(index % 7 === 6){
    week.push(days);
    console.log(week);
    days = [];

     if (dayIndex + 1 >= maxDay) {
          break;
     }
  }

 index += 1;
} while(true);
var month=moment(),
指数=0,
maxDay=month.daysInMonth(),
开始=月。开始时间(“月”),
偏移量=(start.isoWeekday()-1+7)%7;//从星期一开始
变量周=[];//持续数周
变量天数=[];//保存日期
做{
var dayIndex=指数-抵销;
如果(dayIndex>=0&&dayIndex=maxDay){
打破
}
}
指数+=1;
}虽然(正确);
这很好,我唯一的问题就是弄清楚今天是今天还是过去


代码也在这里:

使用力矩方法,如
isname()
isBefore()
issameorfore()

它们都允许设置比较单位,如
年-月-周-日-时-分-秒

参见

力矩具有,以及用于比较力矩的函数,如文档所述:

如果要将粒度限制为毫秒以外的单位,请将单位作为第二个参数传递


您的代码中有一些东西可以通过使用momentjs而不是自己重新实现的简单方式实现:

  • 要从每月的第一天循环到可以使用的最后一天,请执行以下操作:
    • 作为循环的极限
    • 增加循环索引
    • as循环条件
  • 用于获取月份的日期(1-31)
  • 用于获取一周中的某一天(0=>周日,…6=>周六);或者了解一周中的某一天的区域设置
使用这些建议,您的代码可能如下所示:

var day=moment().startOf('month');
var endOfMonth=moment().endOf('month');
风险值周=[];
var月=[];
while(日前(月底)){
推({
编号:day.date(),
isPast:moment().isAfter(day,'day'),
isToday:moment().IsName(day,“day”)
});
如果(day.day()==0){
月推(周);
周=[];
}
日。添加(1,“日”);
}
控制台日志(月)

将其与使用当前日期和设置为午夜的时间创建的日期进行比较。任何少于这一天的日期都不能和“今天”在同一天。太棒了,非常感谢。我是momentjs的新手,所以感谢你。