资讯专栏INFORMATION COLUMN

如何开发一个微信小程序日历插件

DandJ / 2172人阅读

摘要:最近做小程序开发,出于练手,也是工作需要,就做了个微信小程序的类似于酒店预订的日历插件。计算每月第一天是星期几日一二三四五六利用构造函数生成数据,一会用。

最近做小程序开发,出于练手,也是工作需要,就做了个微信小程序的类似于酒店预订的日历插件。
先上图;

这个插件分为上下两部分,上边是tab栏,会根据当前的日期自动定位到当前,并展示以后7天的日期,下边为内容展示,随tab栏变化而变化。
思路:
首先用new Data()时间对象初始化时间,获取当前的日期,用new Date(Date.UTC(year, month - 1, 1)).getDay()获取每个月的第一天是星期几。

</>复制代码

  1. // 计算每月第一天是星期几
  2. function getFirstDayOfWeek(year, month) {
  3. return new Date(Date.UTC(year, month - 1, 1)).getDay();
  4. }
  5. const date = new Date();
  6. const cur_year = date.getFullYear();
  7. const cur_month = date.getMonth() + 1;
  8. const cur_date=date.getDate();
  9. const weeks_ch = ["日", "一", "二", "三", "四", "五", "六"];

利用构造函数生成数据,一会用。

</>复制代码

  1. //利用构造函数创建对象
  2. function calendar(date,week){
  3. this.date=cur_year+"-"+cur_month+"-"+date;
  4. if(date==cur_date){
  5. this.week = "今天";
  6. }else if(date==cur_date+1){
  7. this.week = "明天";
  8. }else{
  9. this.week = "星期" + week;
  10. }
  11. }

使用for循环生成json数据:

</>复制代码

  1. for(var i=1;i<=monthLength;i++){
  2. //当循环完一周后,初始化再次循环
  3. if(x>6){
  4. x=0;
  5. }
  6. //利用构造函数创建对象
  7. that.data.calendar[i] = new calendar(i, [weeks_ch[x]][0])
  8. x++;
  9. }

这里因为一周有7天,所以当x>6的时候,重置为0。
最后展示部分源码

</>复制代码

  1. var that=this;
  2. function getThisMonthDays(year, month) {
  3. return new Date(year, month, 0).getDate();
  4. }
  5. // 计算每月第一天是星期几
  6. function getFirstDayOfWeek(year, month) {
  7. return new Date(Date.UTC(year, month - 1, 1)).getDay();
  8. }
  9. const date = new Date();
  10. const cur_year = date.getFullYear();
  11. const cur_month = date.getMonth() + 1;
  12. const cur_date=date.getDate();
  13. const weeks_ch = ["日", "一", "二", "三", "四", "五", "六"];
  14. //利用构造函数创建对象
  15. function calendar(date,week){
  16. this.date=cur_year+"-"+cur_month+"-"+date;
  17. if(date==cur_date){
  18. this.week = "今天";
  19. }else if(date==cur_date+1){
  20. this.week = "明天";
  21. }else{
  22. this.week = "星期" + week;
  23. }
  24. }
  25. //当前月份的天数
  26. var monthLength= getThisMonthDays(cur_year, cur_month)
  27. //当前月份的第一天是星期几
  28. var week = getFirstDayOfWeek(cur_year, cur_month)
  29. var x = week;
  30. for(var i=1;i<=monthLength;i++){
  31. //当循环完一周后,初始化再次循环
  32. if(x>6){
  33. x=0;
  34. }
  35. //利用构造函数创建对象
  36. that.data.calendar[i] = new calendar(i, [weeks_ch[x]][0])
  37. x++;
  38. }
  39. //限制要渲染的日历数据天数为7天以内(用户体验)
  40. var flag = that.data.calendar.splice(cur_date, that.data.calendar.length - cur_date <= 7 ? that.data.calendar.length:7)
  41. that.setData({
  42. calendar: flag
  43. })
  44. //设置scroll-view的子容器的宽度
  45. that.setData({
  46. width: 186 * parseInt(that.data.calendar.length - cur_date <= 7 ? that.data.calendar.length : 7)
  47. })

插件地址:github地址

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/94609.html

相关文章

  • 简陋至极:信小程序日历组件(思路)

    摘要:最近在做微信小程序项目,其中涉及到日历。其次,弄清楚每月一号对应的是周几。当月天数已知,上月残余天数,我们可以用当月号是周几来推断出来,下月残余天数,正好用当月天数上月残余。 最近在做微信小程序项目,其中涉及到日历。一直以来,遇到日历,就是网上随便找个插件,这次心血来潮,想着自己去实现一下。这次不是封装功能强大,健硕完美的组件,只是记录一下,主体思路。更多功能还得根据项目需要,自己去挖...

    import. 评论0 收藏0
  • 信小程序资源汇总

    awesome-github-wechat-weapp 是由OpenDigg整理并维护的微信小程序开源项目库集合。我们会定期同步上的项目到这里,也欢迎各位 UI组件开发框架实用库开发工具服务端项目实例Demo UI组件 weui-wxss ★1873 - 同微信原生视觉体验一致的基础样式库zanui-weapp ★794 - 好用易扩展的小程序 UI 库wx-charts ★449 - 微信小程...

    Olivia 评论0 收藏0
  • 信小程序:手写日历组件

    摘要:一前言最近公司要做一个酒店入住的小程序,不可避免的一定会使用到日历,而小程序没有内置的日历组件。二代码原理分析写一个日历只需要知道两件事情一个月有多少天每个月的第一天是星期几。 一、前言 最近公司要做一个酒店入住的小程序,不可避免的一定会使用到日历,而小程序没有内置的日历组件。在网上看了一下也没有非常适合需求的日历,于是自己写了一个。 二、代码 1. 原理分析 写一个日历只需要知道两件...

    genefy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<