今天需要实现预约 选择日期的功能, 要求是从今天开始,展示未来一个月的, 下面这种样子的, 第一次写, 记录一下.
思路:
- 获取当天日期
- 定义结束的日期, 通过获取到的当天的日期, 月份+1
- 创建空数组, 用来存放要展示的日期
- 使用循环, 将 当天日期 到 结束日期的 每天的日期都 push 到数组里
代码:
getDateList() {
// 获取当天日期
const currentDate = new Date();
// 定义结束日期和开始日期相同
const endDate = new Date(currentDate);
// 将结束日期的月份 + 1, 得到从今天开始一个月后的日期
endDate.setMonth(endDate.getMonth() + 1);
// 创建空数组用来存放今天到结束日期之间的日期
const dates = [];
// 通过while循环, 满足条件一直走, 条件按不满足就停止
while (currentDate <= endDate) {
// 获取今天的星期几, .getDay()得到的是0-6的数字
const dayOfWeek = currentDate.getDay();
// 用来存星期几的字符串
let dateString = '';
if (currentDate.toLocaleDateString() === new Date().toLocaleDateString()) {
dateString = "今天";
} else if (currentDate.toLocaleDateString() === new Date(new Date().getTime() + 24 * 60 * 60 * 1000)
.toLocaleDateString()) {
dateString = "明天";
} else {
const dayNames = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"];
dateString = dayNames[dayOfWeek];
}
// 指定格式话的日期格式. 月份和日期都为两位数
const options = {
year: 'numeric',
month: '2-digit',
day: '2-digit'
};
// toLocaleDateString('zh-CN', options) 将日期格式化成想要的样子,
dates.push({
day: new Date(currentDate).toLocaleDateString('zh-CN', options),
week: dateString
});
// 把开始日期加一天, 进行循环, 如果加完之后满足循环条件,就push到数组中, 开始日期加到大于结束日期则不满足条件,循环结束
currentDate.setDate(currentDate.getDate() + 1);
}
this.dateList = dates;
console.log(this.dateList);
},