【问题标题】:Determine if the date is today or is in the past using MomentJS?使用 MomentJS 确定日期是今天还是过去?
【发布时间】:2017-04-10 18:31:21
【问题描述】:

我正在构建一个只显示当前月份的迷你日历,我已经弄清楚如何绘制日历,这里是代码:

代码:

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);

这很好用,我唯一的问题是弄清楚这一天是今天还是过去?

代码也在这里:https://jsfiddle.net/chghb3Lq/3/

【问题讨论】:

  • 将其与使用当前日期创建的日期进行比较,并将时间设置为恰好午夜。任何小于该日期的日期不得与“今天”在同一天。

标签: javascript momentjs


【解决方案1】:

使用诸如isSame()isBefore()isSameOrBefore() 等矩方法。

它们都允许设置比较单位,例如year month week day hour minute second

Query Section of moment docs

【讨论】:

    【解决方案2】:

    Moment 具有 isBeforeisAfterisSame 函数来比较时刻,正如文档所说:

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


    您的代码中有几件事可以使用 momentjs 以简单的方式实现,而不是自己重新实现:

    使用这些建议,您的代码可能如下所示:

    var day = moment().startOf('month');
    var endOfMonth = moment().endOf('month');
    
    var week = [];
    var month = [];
    
    while( day.isBefore(endOfMonth) ){
      week.push({
        number: day.date(),
        isPast: moment().isAfter(day, 'day'),
        isToday: moment().isSame(day, 'day')
      });
      if( day.day() === 0 ){
        month.push(week);
        week = [];
      }
      day.add(1, 'day');
    }
    
    console.log(month);
    &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"&gt;&lt;/script&gt;

    【讨论】:

    • 太棒了,非常感谢。我是momentjs的新手,所以很感激。
    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多