您好,登錄后才能下訂單哦!
今天小編給大家分享一下小程序下訂單日歷插件怎么實(shí)現(xiàn)的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
這個插件分為上下兩部分,上邊是tab欄,會根據(jù)當(dāng)前的日期自動定位到當(dāng)前,并展示以后7天的日期,下邊為內(nèi)容展示,隨tab欄變化而變化。
思路:
首先用new Data()時間對象初始化時間,獲取當(dāng)前的日期,用new Date(Date.UTC(year, month - 1, 1)).getDay()獲取每個月的第一天是星期幾。
// 計(jì)算每月第一天是星期幾
function getFirstDayOfWeek(year, month) {
return new Date(Date.UTC(year, month - 1, 1)).getDay();
}
const date = new Date();
const cur_year = date.getFullYear();
const cur_month = date.getMonth() + 1;
const cur_date=date.getDate();
const weeks_ch = ['日', '一', '二', '三', '四', '五', '六'];
利用構(gòu)造函數(shù)生成數(shù)據(jù),一會用。
//利用構(gòu)造函數(shù)創(chuàng)建對象
function calendar(date,week){
this.date=cur_year+'-'+cur_month+'-'+date;
if(date==cur_date){
this.week = "今天";
}else if(date==cur_date+1){
this.week = "明天";
}else{
this.week = '星期' + week;
}
}
使用for循環(huán)生成json數(shù)據(jù):
for(var i=1;i<=monthLength;i++){
//當(dāng)循環(huán)完一周后,初始化再次循環(huán)
if(x>6){
x=0;
}
//利用構(gòu)造函數(shù)創(chuàng)建對象
that.data.calendar[i] = new calendar(i, [weeks_ch[x]][0])
x++;
}
這里因?yàn)橐恢苡?天,所以當(dāng)x>6的時候,重置為0。
最后展示部分源碼
var that=this;
function getThisMonthDays(year, month) {
return new Date(year, month, 0).getDate();
}
// 計(jì)算每月第一天是星期幾
function getFirstDayOfWeek(year, month) {
return new Date(Date.UTC(year, month - 1, 1)).getDay();
}
const date = new Date();
const cur_year = date.getFullYear();
const cur_month = date.getMonth() + 1;
const cur_date=date.getDate();
const weeks_ch = ['日', '一', '二', '三', '四', '五', '六'];
//利用構(gòu)造函數(shù)創(chuàng)建對象
function calendar(date,week){
this.date=cur_year+'-'+cur_month+'-'+date;
if(date==cur_date){
this.week = "今天";
}else if(date==cur_date+1){
this.week = "明天";
}else{
this.week = '星期' + week;
}
}
//當(dāng)前月份的天數(shù)
var monthLength= getThisMonthDays(cur_year, cur_month)
//當(dāng)前月份的第一天是星期幾
var week = getFirstDayOfWeek(cur_year, cur_month)
var x = week;
for(var i=1;i<=monthLength;i++){
//當(dāng)循環(huán)完一周后,初始化再次循環(huán)
if(x>6){
x=0;
}
//利用構(gòu)造函數(shù)創(chuàng)建對象
that.data.calendar[i] = new calendar(i, [weeks_ch[x]][0])
x++;
}
//限制要渲染的日歷數(shù)據(jù)天數(shù)為7天以內(nèi)(用戶體驗(yàn))
var flag = that.data.calendar.splice(cur_date, that.data.calendar.length - cur_date <= 7 ? that.data.calendar.length:7)
that.setData({
calendar: flag
})
//設(shè)置scroll-view的子容器的寬度
that.setData({
width: 186 * parseInt(that.data.calendar.length - cur_date <= 7 ? that.data.calendar.length : 7)
})
以上就是“小程序下訂單日歷插件怎么實(shí)現(xiàn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。