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的新手,所以感谢你。