日历签到小程序的实现
首先我们来看一下最终的效果图:
(学习视频分享:编程入门)
下面我们来介绍实现思路:
首先,我们要获取的无非就是每一个格子里面的数据。
先获取月,然后点击月切换到另一个月,到了边界线的时候到了上/下年即可。
那么,怎么获取月的数据呢,可以看到月第一天都是1开始,然后xx天,比如1月31天,我们把它枚举出来。
但是月份受到年份影响,所以计算是否闰年就完成了。
上代码
获取这个月的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 // --获取年对应的月份 var getMothNum = y => ([ 31, getAugNum(y), 31, 30, 31, 30, 31,31, 30, 31, 30, 31 ])
我上面js就这些了(还差上下月切换的没说哈)
但是少了中文的月份,有需要的这个可以再匹配
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) } } },
上下月操作好了就是更新数据了,更新数据的时候,因为小程序不能在view里面写逻辑,所以我们在mpa里面操作(这是我的业务逻辑,你们不用管他,我之所以放出来是方便大家查看)
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, })) // 获取月和修改的时候,获取签到列表 this.setSign(dateY, dateM) // console.log(date_list) },
然后会注意到,这里有一个chckin_list,这个就是要渲染出来的啦。 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>
上面是我的业务逻辑,其实只需要if,day就行了,因为除了空的,其他都需要渲染。但是一般业务也有是否签到啊,今天以后的灰色不可点击啊(这里没有不可点击是因为用css禁用点击)
其他
之所以没放css,大家css还是自己写吧,如果真有需要,在下面评论。
哦, 如果要看效果,去小程序里面搜索《初九背单词》,点击日历(一个是首页完成今日任务,一个是我的->背单词天数)
(如果有需要,我可以说下签到后台是怎么做的,nodejs)
--好了--
就这样了,晚安
--- 更新部分---
(楼下有人提醒(毛毛饭),3月最后一个31号的不见了,我检查了下,发现被剪切了,因为5 * 7并不能完整展示出来)
修复后的图
改动部分就是,动态加载行。
基于上面的代码,添加一个判断
先在前面的35改成6*7。因为多加了一行。 然后再判断是否有空余位置,去掉即可。
row.map(e => e || '').join('') !== ''
--完--
相关推荐:小程序开发教程
Atas ialah kandungan terperinci 日历签到小程序的实现. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Alat penting untuk mengatur kerja dan rutin harian anda dalam Windows 11 ialah paparan masa dan tarikh dalam bar tugas. Ciri ini biasanya terletak di sudut kanan bawah skrin dan memberikan anda akses segera kepada masa dan tarikh. Dengan mengklik kawasan ini, anda boleh memaparkan kalendar anda, menjadikannya lebih mudah untuk menyemak janji temu dan tarikh yang akan datang tanpa perlu membuka apl berasingan. Walau bagaimanapun, jika anda menggunakan berbilang monitor, anda mungkin menghadapi masalah dengan ciri ini. Khususnya, semasa jam dan tarikh muncul pada bar tugas pada semua monitor yang disambungkan, keupayaan untuk mengklik tarikh dan masa pada monitor kedua untuk memaparkan kalendar tidak tersedia. Buat masa ini, ciri ini hanya berfungsi pada paparan utama - ia tidak seperti Windows 10, di mana mengklik mana-mana

Ramai pengguna ingin menggunakan alat Kalendar Win10 untuk menyemak bilangan hari semasa, tetapi kalendar tidak memaparkan fungsi ini secara automatik, sebenarnya, kita hanya perlu menggunakan tetapan mudah untuk melihat bilangan terkumpul minggu tahun ini~paparan Kalendar Win10. minggu Tutorial tetapan digital: 1. Masukkan kalendar dalam carian di sudut kiri bawah desktop dan buka aplikasi. 2. Dalam aplikasi kalendar terbuka, klik ikon "gear" di sudut kiri bawah, dan tetapan akan muncul di sebelah kanan Kami mengklik "Tetapan Kalendar" 3. Teruskan dalam tetapan kalendar terbuka, cari "Nombor Minggu". dan kemudian tukar minggu Hanya laraskan pilihan nombor kepada "hari pertama dalam tahun". 4. Selepas melengkapkan tetapan di atas, klik "Minggu" untuk melihat statistik nombor minggu tahun ini.

Jika kalendar Outlook anda tidak boleh disegerakkan dengan Kalendar Google, Pasukan, iPhone, Android, Zum, akaun Office, dll., sila lakukan langkah berikut untuk menyelesaikan isu tersebut. Apl kalendar boleh disambungkan kepada perkhidmatan kalendar lain seperti Kalendar Google, iPhone, Android, Microsoft Office 365, dsb. Ini sangat berguna kerana ia boleh menyegerak secara automatik. Tetapi bagaimana jika OutlookCalendar gagal disegerakkan dengan kalendar pihak ketiga Kemungkinan sebabnya mungkin memilih kalendar yang salah untuk penyegerakan, kalendar tidak kelihatan, gangguan aplikasi latar belakang, aplikasi Outlook atau aplikasi kalendar yang sudah lapuk, dsb. Pembetulan awal untuk kalendar Outlook tidak menyegerak

Beberapa rakan yang menggunakan sistem win0 telah menghadapi situasi di mana kalendar win10 tidak boleh dibuka Ini hanya masalah komputer biasa Ia boleh diselesaikan dalam tetapan privasi sistem win10. Di bawah Mari kita lihat. Penyelesaian kepada masalah bahawa kalendar tidak boleh dibuka di sudut kanan bawah win10 1. Klik Mula dalam sistem win10 → klik butang senarai program di atas → cari Pinyin (Bahasa Cina) R → Kalendar 2. Apabila menggunakannya buat kali pertama , acara baharu mungkin tidak dibuka (tetikus Jika anda condong ke atas, tidak akan ada biru tua yang dipilih), anda boleh menetapkannya dalam privasi. Klik ikon tiga bar di sudut kiri atas desktop → akan ada menu tetapan di bahagian bawah 3. Klik Privasi dalam antara muka pop timbul 4. Jika anda pernah menggunakan tetapan sebelum ini, anda boleh klik pada kiri

Pejabat Pembelian yang Hilang akan dikemas kini pada pukul 11 pagi pada 28 Februari Pemain boleh pergi ke Taobao untuk mencari di Pejabat Pembelian dan memilih kategori kedai untuk dibeli Kali ini kami membawakan anda siri pesta ulang tahun MBCC dan peranti Kalendar Meja 2024 bersama-sama lihat butiran produk kali ini. Tiada Tempoh Hilang Pejabat Pembelian: Peranti siri kalendar dan hari jadi baharu! Terdapat sesuatu yang baru di Pejabat Perolehan yang Hilang! —Masa pra-jualan: 11:00 pada 28 Februari 2024 - 23:59 pada 13 Mac 2024. Alamat pembelian: Cari Taobao [Indefinite Lost Purchasing Office] dan pilih kategori [Kedai] untuk memasuki kedai untuk pembelian; pengenalan: Peranti baharu yang dikeluarkan kali ini ialah siri parti hari jadi MBCC dan peranti kalendar meja 2024 Sila klik pada imej yang panjang untuk mendapatkan butiran. Pejabat Pembelian memperkenalkan peranti baharu—pelajar MBCC

Kalendar boleh membantu pengguna merekodkan jadual anda dan juga menetapkan peringatan Walau bagaimanapun, ramai pengguna bertanya apa yang perlu dilakukan jika peringatan acara kalendar tidak muncul dalam Windows 10? Pengguna boleh menyemak status kemas kini Windows dahulu atau mengosongkan cache Windows App Store untuk melaksanakan operasi. Biarkan tapak ini dengan teliti memperkenalkan kepada pengguna analisis masalah peringatan acara kalendar Win10 yang tidak muncul. Untuk menambah acara kalendar, klik program "Kalendar" dalam menu sistem. Klik butang kiri tetikus pada tarikh dalam kalendar. Masukkan nama acara dan masa peringatan dalam tetingkap pengeditan, dan klik butang "Simpan" untuk menambah acara. Menyelesaikan masalah peringatan acara kalendar win10 tidak muncul

Dengan populariti teknologi Internet mudah alih dan telefon pintar, WeChat telah menjadi aplikasi yang sangat diperlukan dalam kehidupan orang ramai. Program mini WeChat membenarkan orang ramai menggunakan program mini secara langsung untuk menyelesaikan beberapa keperluan mudah tanpa memuat turun dan memasang aplikasi. Artikel ini akan memperkenalkan cara menggunakan Python untuk membangunkan applet WeChat. 1. Persediaan Sebelum menggunakan Python untuk membangunkan applet WeChat, anda perlu memasang perpustakaan Python yang berkaitan. Adalah disyorkan untuk menggunakan dua perpustakaan wxpy dan itchat di sini. wxpy ialah mesin WeChat

Jika komputer Windows 11 anda memaparkan masa yang salah, ia boleh menyebabkan banyak masalah dan malah menghalang anda daripada menyambung ke Internet. Malah, sesetengah aplikasi enggan dibuka atau dijalankan apabila sistem memaparkan tarikh dan masa yang salah. Jadi bagaimanakah masalah ini harus diselesaikan? Mari lihat di bawah! Kaedah 1: 1. Mula-mula kita klik kanan pada ruang kosong bar tugas di bawah dan pilih Tetapan Bar Tugas 2. Cari taskbarcorneroverflow3 di sebelah kanan dalam tetapan bar tugas, kemudian cari jam atau jam di atasnya dan pilih untuk menghidupkannya. Kaedah 2: 1. Tekan pintasan papan kekunci win+r untuk memanggil run, masukkan regedit dan tekan Enter untuk mengesahkan. 2. Buka Registry Editor dan cari HKEY di dalamnya
