1天前小编发现微信小程序用户:【万事如意】提出了一个关于“日历的农历转换问题?请高手指点”的问题,在问题中开发者万事如意对该问题做了如下阐述:
该图片引用微信开放社区
上图是进入后的页面,使正常的,但是点击下个月,农历就出错了
该图片引用微信开放社区
再点到五月,农历就没有四月了 不知道那出错了,请高手指点
//index.js
var utils = require(‘../../utils/util.js’);
Page({
data: {
userInfo: {}
},
saveData: {},
//事件处理函数
bindViewTap: function() {
wx.navigateTo({
url: ‘../detail/detail’
})
},
getTableArray: function(year, month) {
var date = year && month ? new Date(year, month – 1, 1) : new Date();
var dayCount = 0;
var startRow = 0;
var tableArray = [];
var diffStart = 0;
var todayStr = utils.format(new Date(), ‘{Y}-{M}-{D}’);
date.setMonth(date.getMonth() + 1);
date.setDate(0);
dayCount = date.getDate();
date.setDate(1);
diffStart = date.getDay();
for (var i = 1; i <= dayCount; i++) {
if (!utils.isArray(tableArray[startRow])) {
tableArray[startRow] = Array(7);
}
date.setDate(i);
var lunDate = utils.e2c(date.getFullYear(), date.getMonth(), i).day;
var tmpDate = (lunDate < 11) ? ‘初’ : ((lunDate < 20) ? ‘十’ : ((lunDate < 30) ? ‘廿’ : ‘三十’));
if (lunDate % 10 != 0 || lunDate == 10) {
tmpDate += utils.numString.charAt((lunDate – 1) % 10);
}
var dateStr = utils.format(date, ‘{Y}-{M}-{D}’);
tableArray[startRow][date.getDay()] = {
date: dateStr,
calendar: utils.doubleNumber(i),
lunar: tmpDate,
isToday: dateStr === todayStr
};
if ((i + diffStart) % 7 === 0) {
startRow++;
}
}
return tableArray;
},
getTitle: function(year, month, date) {
// 格式化农历日期
var lunarObj = utils.e2c(year, month, date);
var lunYear = ”;
lunYear += utils.tgString.charAt((lunarObj.year – 4) % 10);
lunYear += utils.dzString.charAt((lunarObj.year – 4) % 12);
lunYear += “(“;
lunYear += utils.sx.charAt((lunarObj.year – 4) % 12);
lunYear += “)年”;
var monStr = utils.format(new Date(year, month, date), ‘{Y}年{M}月’);
var lunMon = lunYear + utils.monString.charAt(lunarObj.month – 1) + ‘月’;
return {
month: monStr,
lunMonth: lunMon
};
},
onLoad: function () {
// console.log(‘onLoad’)
var that = this;
var today = new Date();
var tableArray = [];
var itemHeight = ‘20%’;
var year = today.getFullYear();
var month = today.getMonth();
var date = today.getDate();
var titleObj = this.getTitle(year, month, date);tableArray = this.getTableArray(year, month + 1);
itemHeight = 1 / tableArray.length * 100 + ‘%’;this.saveData.currentDate = year + ‘-‘ + month + ‘-‘ + date;
this.setData({
month: year + ‘-‘ + month + ‘-‘ + date,
dateTable: tableArray,
itemHeight: itemHeight,
date: {
calendar: titleObj.month,
lunar: titleObj.lunMonth
}
});
//调用应用实例的方法获取全局数据
// app.getDateDetail(‘2017-01-22’, function(data) {
// console.log(data);
// });
},
toDetail: function(e) {
var target = e.currentTarget;
var data = target.dataset;
var date = data.date;
wx.navigateTo({
url: ‘../detail/detail?date=’ + date
});
},
goPrevMonth: function(e) {
var target = e.currentTarget;
var data = target.dataset;
var dm = data.month;
var dArr = dm.split(‘-‘);
var y = +dArr[0] || 1970;
var m = +dArr[1] || 0;
var d = +dArr[2] || 1;var today;
var tableArray = [];
var itemHeight = ‘20%’;
var year;
var month;
var date;
var titleObj;if (m <= 0) {
m = 11;
y -= 1;
} else {
m -= 1;
}
today = new Date(y, m, 1);
year = today.getFullYear();
month = today.getMonth();
date = today.getDate();
titleObj = this.getTitle(year, month, date);tableArray = this.getTableArray(year, month + 1);
itemHeight = 1 / tableArray.length * 100 + ‘%’;this.saveData.currentDate = year + ‘-‘ + month + ‘-‘ + date;
this.setData({
month: year + ‘-‘ + month + ‘-‘ + date,
dateTable: tableArray,
itemHeight: itemHeight,
date: {
calendar: titleObj.month,
lunar: titleObj.lunMonth
}
});
},
goNextMonth: function(e) {
var target = e.currentTarget;
var data = target.dataset;
var dm = data.month;
var dArr = dm.split(‘-‘);
var y = +dArr[0] || 1970;
var m = +dArr[1] || 1;
var d = +dArr[2] || 1;var today;
var tableArray = [];
var itemHeight = ‘20%’;
var year;
var month;
var date;
var titleObj;if (m >= 11) {
m = 0;
y += 1;
} else {
m += 1;
}
today = new Date(y, m, 1);
year = today.getFullYear();
month = today.getMonth();
date = today.getDate();
titleObj = this.getTitle(year, month, date);tableArray = this.getTableArray(year, month + 1);
itemHeight = 1 / tableArray.length * 100 + ‘%’;this.saveData.currentDate = year + ‘-‘ + month + ‘-‘ + date;
this.setData({
month: year + ‘-‘ + month + ‘-‘ + date,
dateTable: tableArray,
itemHeight: itemHeight,
date: {
calendar: titleObj.month,
lunar: titleObj.lunMonth
}
});
},
touchStart: function(e) {
var that = this;
var obj = e.changedTouches;
that.saveData.startX = obj[0].pageX;
},
touchEnd: function(e) {
var that = this;
var obj = e.changedTouches;
var endX = obj[0].pageX;
var delta = endX – that.saveData.startX;
var dateStr = that.saveData.currentDate || ‘1970-0-1’;
var dArr = dateStr.split(‘-‘);
var y = +dArr[0];
var m = +dArr[1];
var d = +dArr[2];var today;
var tableArray = [];
var itemHeight = ‘20%’;
var year;
var month;
var date;
var titleObj;if (Math.abs(delta) < 50) {
return false;
}
if (delta < 0) {
if (m >= 11) {
m = 0;
y += 1;
} else {
m += 1;
}
} else {
if (m <= 0) {
m = 11;
y -= 1;
} else {
m -= 1;
}
}
today = new Date(y, m, 1);
year = today.getFullYear();
month = today.getMonth();
date = today.getDate();
titleObj = this.getTitle(year, month, date);tableArray = this.getTableArray(year, month + 1);
itemHeight = 1 / tableArray.length * 100 + ‘%’;this.saveData.currentDate = year + ‘-‘ + month + ‘-‘ + date;
this.setData({
month: year + ‘-‘ + month + ‘-‘ + date,
dateTable: tableArray,
itemHeight: itemHeight,
date: {
calendar: titleObj.month,
lunar: titleObj.lunMonth
}
});
}
});
注:以上是微信小程序开发者:”万事如意”对于本问题的一些阐述,这里做一个引用,我们将实时关注微信小程序助手对该问题提出的解决方案。
【2小时前】微信小程序技术运营专员对用户万事如意提出的日历的农历转换问题?请高手指点给予如下回复
请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
微信官方小程序的优势是,其用户体验可以最大限度的接近Native App。因此,微信官方智能小程序也把用户体验作为一个核心进行了优化
如果您也在使用微信小程序,请关注我们,如果您有关于微信小程序的使用问题请关注我们,如果您要找百度小程序模板、微信小程序模板请关注小程序模板网或者去微信开放社区找官方人员给予解决,相信微信官方在小程序上的发力会是一个里程碑!