首先我們來(lái)看看最終的效果圖:
(學(xué)習(xí)影片分享:程式設(shè)計(jì)入門)
#下面我們來(lái)介紹實(shí)作想法:
首先,我們要取得的無(wú)非就是每一個(gè)格子裡面的資料。
先取得月,然後點(diǎn)擊月切換到另一個(gè)月,到了界線的時(shí)候到了上/下年即可。
那麼,怎麼取得月的資料呢,可以看到月第一天都是1開始,然後xx天,例如1月31天,我們把它列舉出來(lái)。
但是月份受到年份影響,所以計(jì)算是否閏年就完成了。
上程式碼
取得這個(gè)月的7*5列表
let getMothList = (year, month) => { var star = new Date(Date.UTC(year, month - 1, 1)).getDay() let mn = getMothNum(year)[month - 1] var res = [] var row = [] new Array(35) .fill('') .map((_, i) => i - star + 1) .map(e => (e > 0 && e <= mn) ? ({ date: `${year}/${month}/${e}`, number: e }) : (null) ) .forEach((item, i) => { row.push(JSON.parse(JSON.stringify(item))) if((i + 1) % 7 == 0){ res.push(row) row = [] } }) return res }
然後取得月
var getMaxY = y => Boolean( y % 4 ==0 && y % 100 != 0 || y % 400==0 ) var getAugNum = n => getMaxY(n) ? 29 : 28 // --獲取年對(duì)應(yīng)的月份 var getMothNum = y => ([ 31, getAugNum(y), 31, 30, 31, 30, 31,31, 30, 31, 30, 31 ])
我上面js就這些了(還差上下月切換的沒說(shuō)哈)
但是少了中文的月份,有需要的這個(gè)可以再匹配
var mothZh = ['一','二','三','四','五','六','七','八','九','十','十一','十二'].map(e => e + '月')
然後就是上下月月份了
up(e){ var data = e.currentTarget.dataset if(data.data == '上'){ if(this.data.dateM > 1){ var dateM = this.data.dateM var dateY = this.data.dateY this.setDate(dateY, dateM - 1) }else{ var dateY = this.data.dateY this.setDate(dateY - 1, 12) } } }, down(e){ var data = e.currentTarget.dataset if(data.data == '下'){ if(this.data.dateM < 12){ var dateM = this.data.dateM var dateY = this.data.dateY this.setDate(dateY, dateM + 1) }else{ var dateY = this.data.dateY this.setDate(dateY + 1, 1) } } },
上下月操作好了就是更新數(shù)據(jù)了,更新數(shù)據(jù)的時(shí)候,因?yàn)樾〕淌讲荒茉趘iew裡面寫邏輯,所以我們?cè)趍pa裡面操作(這是我的業(yè)務(wù)邏輯,你們不用管他,我之所以放出來(lái)是方便大家查看)
setDate(dateY, dateM){ var date_list = getMothList(dateY, dateM) .map(e => !e ? e : e.map(day => { var cat_date = this.data.cat_date return !day ? day : { ...day, className: this.data.chckin_list.indexOf(day.date) != -1 ? 'checkin' : '', sign: day.date == [cat_date.y, cat_date.m, cat_date.d].join('/'), maxToday: +(Date.UTC(day.date.split('/')[0], day.date.split('/')[1] - 1, +(day.date.split('/')[2]))) > Date.UTC(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()), } })) this.setData(({ dateY, dateM, date_list, })) // 獲取月和修改的時(shí)候,獲取簽到列表 this.setSign(dateY, dateM) // console.log(date_list) },
然後會(huì)注意到,這裡有一個(gè)chckin_list,這個(gè)就是要渲染出來(lái)的啦。 view
<view class="week"> <view class="flex" wx:for="{{date_list}}" wx:key="index" wx:for-item="row"> <view class="day {{day.maxToday ? 'maxToday' : ''}}" wx:for="{{row}}" wx:for-index="row_idx" wx:for-item="day" wx:key="row_idx" bind:tap="tapDay" data-day="{{day.date}}" > <block wx:if="{{day}}"> <text class="block to_day_block {{day.sign ? 'select_date' : ''}}" wx:if="{{toDay == day.date}}">今</text> <text class="block {{day.sign ? 'select_date' : ''}}" wx:else>{{day.number}}</text> </block> <view wx:if="{{day.className}}" class="{{day.className}}">已簽</view> </view> </view> </view>
上面是我的業(yè)務(wù)邏輯,其實(shí)只需要if,day就行了,因?yàn)槌丝盏?,其他都需要渲染。但一般業(yè)務(wù)也有是否簽到啊,今天以後的灰色不可點(diǎn)擊?。ㄟ@裡沒有不可點(diǎn)擊是因?yàn)橛胏ss禁用點(diǎn)擊)
其他
之所以沒放css,大家css還是自己寫吧,如果真有需要,在下面評(píng)論。
哦, 如果要看效果,去小程式裡面搜尋《初九背單字》,點(diǎn)擊日曆(一個(gè)是首頁(yè)完成今日任務(wù),一個(gè)是我的->背單字天數(shù))
(如果有需要,我可以說(shuō)下簽到後臺(tái)是怎麼做的,nodejs)
--好了--
就這樣了,晚安
#- -- 更新部分---
(樓下有人提醒(毛毛飯),3月最後一個(gè)31號(hào)的不見了,我檢查了下,發(fā)現(xiàn)被剪切了,因?yàn)? * 7並不能完整展示出來(lái))
修復(fù)後的圖
改變部分就是,動(dòng)態(tài)載入行。
是基於上面的程式碼,加上一個(gè)判斷
先在前面的35改成6*7。因?yàn)槎嗉恿艘恍?。然後再判斷是否有空閒位置,去掉即可。
row.map(e => e || '').join('') !== ''
--完--
相關(guān)推薦:小程式開發(fā)教學(xué)
#以上是日曆簽到小程式的實(shí)現(xiàn)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

在Windows11中組織日常工作和例行公事的重要工具是在工作列中顯示時(shí)間和日期。此功能通常位於螢?zāi)坏挠蚁陆?,可讓您即時(shí)存取時(shí)間和日期。透過(guò)點(diǎn)擊此區(qū)域,您可以調(diào)出日曆,從而更輕鬆地檢查即將到來(lái)的約會(huì)和日期,而無(wú)需打開單獨(dú)的應(yīng)用程式。但是,如果您使用多個(gè)顯示器,則此功能可能會(huì)遇到問題。具體來(lái)說(shuō),雖然時(shí)鐘和日期顯示在所有連接的顯示器上的任務(wù)欄上,但點(diǎn)擊第二個(gè)顯示器上的日期和時(shí)間來(lái)顯示日曆的功能不可用。截至目前,此功能僅在主顯示幕上起作用-它與Windows10不同,在Windows10中,按一下任

很多用戶想要透過(guò)win10日曆這個(gè)工具來(lái)查看當(dāng)前天數(shù),但是日曆不會(huì)自動(dòng)顯示這一功能,其實(shí)我們只需要通過(guò)簡(jiǎn)單的設(shè)置,就能夠看到今年的累計(jì)週數(shù)了哦~win10日曆顯示週數(shù)設(shè)定教學(xué):1、在桌面左下角的搜尋中輸入日曆並且開啟應(yīng)用程式。 2.在開啟的日曆應(yīng)用程式中,點(diǎn)擊左下角的「齒輪」圖示後,會(huì)在右側(cè)彈出設(shè)置,我們點(diǎn)擊「日曆設(shè)定」3、繼續(xù)在開啟的日曆設(shè)定中,找到「週數(shù)」然後將週數(shù)選項(xiàng)調(diào)整到“一年中的第一天”即可。 4.在完成以上設(shè)定後,點(diǎn)擊「週」即可看到今年的周數(shù)統(tǒng)計(jì)了。

有使用win0系統(tǒng)的小夥伴有遇見win10日曆打不開的情況,這個(gè)是正常的電腦的小故障而已,在win10系統(tǒng)的隱私設(shè)定裡可以解決,今天小編帶來(lái)了詳細(xì)的解決方法,下面大家一起來(lái)看看吧。 win10右下角的行事曆打不開解決方法1、在win10系統(tǒng)中點(diǎn)選開始→點(diǎn)擊上方的程式清單按鈕→往下找到拼音(中文)R→行事曆2、初次使用,可能新事件會(huì)點(diǎn)不開(滑鼠靠上去,不會(huì)有選取的深藍(lán)色),可以在隱私中設(shè)定一下。點(diǎn)擊桌面左上方的三道槓圖示→底部就會(huì)有設(shè)定選單;3、在彈出的介面中點(diǎn)擊隱私;4、如果之前使用過(guò)設(shè)置,可以點(diǎn)擊左

如果您的Outlook行事曆無(wú)法與Google行事曆、Teams、iPhone、Android、Zoom、Office帳號(hào)等同步,請(qǐng)執(zhí)行下列步驟來(lái)解決問題。日曆應(yīng)用程式可以連接到其他日曆服務(wù),例如Google日曆、iPhone、安卓、微軟Office365等,這是非常有用的,因?yàn)樗梢宰詣?dòng)同步。但如果OutlookCalendar無(wú)法與第三方日曆同步怎麼辦?可能的原因可能是選擇錯(cuò)誤的日曆進(jìn)行同步,日曆不可見,後臺(tái)應(yīng)用程序幹?jǐn)_,過(guò)時(shí)的Outlook應(yīng)用程序或日曆應(yīng)用程序,等等。修復(fù)Outlook日曆不同步的初步

作為電子郵件管理器應(yīng)用程序,MicrosoftOutlook允許我們安排活動(dòng)和約會(huì)。它透過(guò)提供在Outlook應(yīng)用程式中建立、管理和追蹤這些活動(dòng)(也稱為事件)的工具,使我們能夠保持有序。然而,有時(shí)會(huì)將不需要的事件加入Outlook中的日曆中,這會(huì)對(duì)使用者造成混亂,並向日曆發(fā)送垃圾郵件。在本文中,我們將探討可協(xié)助我們防止Outlook自動(dòng)將事件新增至我的日曆中的各種方案和步驟。 Outlook活動(dòng)-簡(jiǎn)要概述Outlook事件具有多種用途,並具有許多有用的功能,具體如下:日曆整合:在Outlook

行事曆可以幫助使用者記錄你的行程,甚至可以設(shè)定提醒,但是也有不少的使用者在詢問win10行事曆事件提醒不彈出怎麼辦?使用者可以先檢查windows更新狀況或是清除windows應(yīng)用程式商店快取來(lái)進(jìn)行操作就可以了。以下就讓本站來(lái)為使用者來(lái)仔細(xì)的介紹一下win10日曆事件提醒不彈出問題解析吧。新增日曆事件在系統(tǒng)選單中點(diǎn)選「日曆」程式?;笞箧I點(diǎn)擊日曆中的日期。在編輯視窗輸入事件名稱和提醒時(shí)間,點(diǎn)選「儲(chǔ)存」按鈕即可新增事件了。 win10日曆事件提醒不彈出問題解決

隨著行動(dòng)互聯(lián)網(wǎng)技術(shù)和智慧型手機(jī)的普及,微信成為了人們生活中不可或缺的一個(gè)應(yīng)用。而微信小程式則讓人們可以在不需要下載安裝應(yīng)用程式的情況下,直接使用小程式來(lái)解決一些簡(jiǎn)單的需求。本文將介紹如何使用Python來(lái)開發(fā)微信小程式。一、準(zhǔn)備工作在使用Python開發(fā)微信小程式之前,需要先安裝相關(guān)的Python函式庫(kù)。這裡推薦使用wxpy和itchat這兩個(gè)函式庫(kù)。 wxpy是一個(gè)微信機(jī)器

實(shí)作微信小程式中的卡片翻轉(zhuǎn)特效在微信小程式中,實(shí)現(xiàn)卡片翻轉(zhuǎn)特效是一種常見的動(dòng)畫效果,可以提升使用者體驗(yàn)和介面互動(dòng)的吸引力。以下將具體介紹如何在微信小程式中實(shí)現(xiàn)卡片翻轉(zhuǎn)的特效,並提供相關(guān)程式碼範(fàn)例。首先,需要在小程式的頁(yè)面佈局檔案中定義兩個(gè)卡片元素,一個(gè)用於顯示正面內(nèi)容,一個(gè)用於顯示背面內(nèi)容,具體範(fàn)例程式碼如下:<!--index.wxml-->&l
