//全部时间的月份都是按0~11基准,显示月份才+1

let dateArr = [];           //需要遍历的日历数组数据

let arrLen = 0;             //dateArr的数组长度

let now = setYear ? new Date(setYear, setMonth) : new Date();

let year = setYear || now.getFullYear();

let nextYear = 0;

let month = setMonth || now.getMonth();         //没有+1方便后面计算当月总天数

let nextMonth = (month + 1) > 11 ? 1 : (month + 1);

let ss = year + ',' + (month + 1) + ',' + 1;

console.log(ss);

if(this.data.is微信小程序IOS){

ss = ss.replace(/-/g, '/');

}

console.log(ss);

let startWeek = new Date(ss).getDay();              //目标月1号对应的星期

let dayNums = new Date(year, nextMonth, 0).getDate();       //获取目标月有多少天

let obj = {};

let num = 0;

let laseMothYear = year;//上个月份所属年份

let laseMoth = (month - 1) < 0 ? 11 : month - 1;//上个月份,由当月-1得出,若小于0则为上一年11月

let laseMothdayNums = new Date(laseMothYear, laseMoth, 0).getDate();

if (month - 1 < 0) {//上个月份,由当月-1得出,若小于0则为上一年11月

laseMothYear=year-1;

laseMothdayNums = new Date(laseMothYear, laseMoth, 0).getDate();//上个月份天数

}

if (month + 1 > 11) {

nextYear = year + 1;

dayNums = new Date(nextYear, nextMonth, 0).getDate();

}

arrLen = startWeek + dayNums;

let iMonthleng = startWeek + dayNums;//除去下个月份的集合长度

let yu = arrLen % 7;

if (yu!=0){

arrLen = startWeek + dayNums + 7 - yu;

}

for (let i = 0; i < iMonthleng; i++) {

if (i >= startWeek) {//当月天数

num = i - startWeek + 1;

obj = {

isToday: '' + year + (month + 1) + num,

dateNum: num,

}

} else {// 上个月的天数

obj = {

isToday: '' + laseMothYear + (laseMoth + 1) + laseMothdayNums - startWeek + i + 1,

isToMonth:0,

dateNum: laseMothdayNums-startWeek+i+1,//上个月天数数字

};

}

dateArr[i] = obj;

}

if(yu!=0){//下个月天数 因为总是从1开始所以直接循环增加

let daynumber=1;

for (let i = iMonthleng; i < arrLen;i++) {

obj = {

isToday: '' + laseMothYear + (laseMoth + 1) + laseMothdayNums - startWeek + i + 1,

isToMonth: 0,//该天数是否属于当月

dateNum: daynumber,

};

dateArr[i] = obj;

daynumber++;

}

展开全部
收起
2回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • 加一+1

    14人对此回答表示赞同

    代码是日历控件的JS代码。创建日期集合用的

    展开
    14
    0回复
    发布于 5年前

    评论(0)

    收起评论

  • 佩奇他小弟

    5人对此回答表示赞同

    微信小程序IOS上Date构造器与其他环境有所不同,建议打印一下各个newDate出来的对象,看看是否符合您的预期。

    展开
    5
    3回复
    发布于 5年前

    评论(3)

    收起评论

    • 榛子 2019-03-09 11:00

      好的。

      回复
    • Harper 2019-03-11 17:49

      有一定的区别,建议在远程调试的console和vConsole测一下以验证

      回复
    • Ezra 2019-03-13 09:33

      但是远程调试,可以运行。远程调试和扫描二维码进去有差别吗

      回复
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部