小程序获取一周时间
做了一个小程序的签到功能,需要展示当天所处这一周的日期。这是一年前写的,当时写的有些复杂,目的是纪录,后期优化。
代码
//util.js
//获取当前时间多少天后的日期和对应星期
function getDates(days,todate) {//todate默认参数是当前日期,可以传入对应时间
var dateArry = [];
for (var i = 0; i < days; i++) {
var dateObj = dateLater(todate, i);
dateArry.push(dateObj)
}
return dateArry;
}
/**
* 传入时间后几天
* param:传入时间:dates:"2019-04-12",later:往后多少天
*/
function dateLater(dates, later) {
let dateObj = {};
let show_day = new Array('周日', '周一', '周二', '周三', '周四', '周五', '周六');
let date = new Date(dates);
date.setDate(date.getDate() + later);
let day = date.getDay();
dateObj.year = date.getFullYear();
dateObj.month = ((date.getMonth() + 1) < 10 ? ("0" + (date.getMonth() + 1)) : date.getMonth()+1);
dateObj.day = (date.getDate() < 10 ? ("0" + date.getDate()) : date.getDate());
dateObj.week = show_day[day];
return dateObj;
}
module.exports = {
getDates: getDates
}
这个办法就是通过一周的第一天的日期,来计算剩下6天的日期。接下来就是在js页面获取这一周的第一天。
// 获取当天日期
constructor() {
this.now = new Date();
this.nowYear = this.now.getYear(); //当前年
this.nowMonth = this.now.getMonth(); //当前月
this.nowDay = this.now.getDate(); //当前日
var whichDays=this.now.getDay();
whichDays=whichDays>0 ? whichDays : 7
this.nowDayOfWeek = whichDays; //今天是本周的第几天
this.nowYear += (this.nowYear < 2000) ? 1900 : 0;
},
//格式化数字
formatNumber(n) {
n = n.toString()
return n[1] ? n : '0' + n
},
//格式化日期
formatDate(date) {
let myyear = date.getFullYear();
let mymonth = date.getMonth() + 1;
let myweekday = date.getDate();
return [myyear, mymonth, myweekday].map(this.formatNumber).join('-');
},
onLoad: function (options){
console.log("weekday", util.getDates(7,this.formatDate(new Date(this.nowYear, this.nowMonth, this.nowDay - this.nowDayOfWeek + 1))) //根据本周开始的计算)
}
打印weekday结果
有问题欢迎指出,肯定也有更好的方法,希望不吝指教