小程序日期时间选择组件无bug版,不服来用

2024-05-10 09:18

本文主要是介绍小程序日期时间选择组件无bug版,不服来用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

该组件达到一个目的,就是日期和时间共同选择,时间精确到分钟。

<picker mode="multiSelector" bindchange="bindMultiPickerChangedb" bindcolumnchange="bindMultiPickerColumnChangedb" range="{{dateTimeArray1}}" value="{{dateTime1}}">

       <view class="weui-label fontlittle">取车时间</view>

      <view class="weui-label fontcolor">{{dateTimeArray1[1][dateTime1[1]]}}-{{dateTimeArray1[2][dateTime1[2]]}}</view>

      <view class="weui-label fontlittle">{{dateTimeArray1[3][dateTime1[3]]}}:{{dateTimeArray1[4][dateTime1[4]]}}</view>

</picker>

js代码:

const date = new Date();

Page({

      data:{

             "dateTimeArray1": [],

             "dateTime1":null,

             "dateTimeArray2": [],

             "dateTime2": null,

             "begintime":"",

             "endtime":"",

      },

     onLoad: function (options) {

            var that = this;

           if (wx.getStorageSync('begintime')) {

                     that.setData({

                            begintime: wx.getStorageSync('begintime')

                     });

           }else{

                     that.setData({

                            begintime: date.getFullYear() + '-' + (date.getMonth()) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':00'

                     });

           }

           var obj1 = app.dateTimePicker.dateTimePicker(date.getFullYear(), date.getFullYear() + 2,that.data.begintime);

           that.setData({

                   dateTimeArray1: obj1.dateTimeArray,

                   dateTime1: obj1.dateTime,

           });

    },

    bindMultiPickerChangedb:function(e){

           var that = this;

           that.setData({ dateTime1: e.detail.value });

    },

    bindMultiPickerColumnChangedb:function(e){

           var that = this;

           var arr = that.data.dateTime1;

           if(e.detail.column==1){

                    var rm = e.detail.value + 1;

                    var maxday = 31;

                    if(rm == 1||rm == 3||rm == 5||rm == 7||rm == 8||rm == 10||rm == 12){

                             maxday = 31;

                    }

                    if (rm == 4 || rm == 6 || rm == 9 || rm == 11) {

                            maxday = 30;

                    }

                    if (rm == 2){

                            maxday = (arr[0] % 400 == 0 || (arr[0] % 4 == 0 && arr[0] % 100 != 0))?29:28;

                    }

                    var array = [];

                    for (var i = 1; i <= maxday; i++) {

                          array.push(i < 10 ? '0' + i : '' + i);

                    }

                    that.data.dateTimeArray1[2] = array;

                    that.setData({

                             dateTimeArray1: that.data.dateTimeArray1,

                    });

           }

           var dateArr = that.data.dateTimeArray1;

           arr[e.detail.column] = e.detail.value;

           that.setData({

                     //dateTimeArray1: dateArr,

                    dateTime1: arr

            });

            var year = that.data.dateTimeArray1[0][that.data.dateTime1[0]];

            var month = that.data.dateTimeArray1[1][that.data.dateTime1[1]];

            var day = that.data.dateTimeArray1[2][that.data.dateTime1[2]];

            var hour = that.data.dateTimeArray1[3][that.data.dateTime1[3]];

            var minute = that.data.dateTimeArray1[4][that.data.dateTime1[4]];

            that.setData({

                     begintime: year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':00'

            });

           wx.setStorageSync('begintime', that.data.begintime);

   }

})

dateTimePicker.js

function withData(param) {

return param < 10 ? '0' + param : '' + param;

}

function getLoopArray(start, end) {

var start = start || 0;

var end = end || 1;

var array = [];

for (var i = start; i <= end; i++) {

array.push(withData(i));

}

return array;

}

function getMonthDay(year, month) {

var flag = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0), array = null;

switch (month) {

case '01':

case '03':

case '05':

case '07':

case '08':

case '10':

case '12':

array = getLoopArray(1, 31)

break;

case '04':

case '06':

case '09':

case '11':

array = getLoopArray(1, 30)

break;

case '02':

array = flag ? getLoopArray(1, 29) : getLoopArray(1, 28)

break;

default:

array = '月份格式不正确,请重新输入!'

}

return array;

}

function getNewDateArry() {

// 当前时间的处理

var newDate = new Date();

var year = withData(newDate.getFullYear()),

mont = withData(newDate.getMonth() + 1),

date = withData(newDate.getDate()),

hour = withData(newDate.getHours()),

minu = withData(newDate.getMinutes()),

seco = withData(newDate.getSeconds());

 

return [year, mont, date, hour, minu, seco];

}

function dateTimePicker(startYear, endYear, date) {

// 返回默认显示的数组和联动数组的声明

//var dateTime = [], month = [],dateTimeArray = [[], [], [], [], [], []];

var dateTime = [], month = [],dateTimeArray = [[], [], [], [], []];

var start = startYear || 1978;

var end = endYear || 2100;

// 默认开始显示数据

var defaultDate = date ? [...date.split(' ')[0].split('-'), ...date.split(' ')[1].split(':')] : getNewDateArry();

// 处理联动列表数据

month[1] = getMonthDay(defaultDate[0], 1);

month[2] = getMonthDay(defaultDate[0], 2);

month[3] = getMonthDay(defaultDate[0], 3);

month[4] = getMonthDay(defaultDate[0], 4);

month[5] = getMonthDay(defaultDate[0], 5);

/*年月日 时分秒*/

dateTimeArray[0] = getLoopArray(start, end);

dateTimeArray[1] = getLoopArray(1, 12);

dateTimeArray[2] = getMonthDay(defaultDate[0], defaultDate[1]);

dateTimeArray[3] = getLoopArray(0, 23);

dateTimeArray[4] = getLoopArray(0, 59);

//dateTimeArray[5] = getLoopArray(0, 59);

 

dateTimeArray.forEach((current, index) => {

dateTime.push(current.indexOf(defaultDate[index]));

});

//console.log(dateTimeArray);

return {

dateTimeArray: dateTimeArray,

dateTime: dateTime

}

}

module.exports = {

dateTimePicker: dateTimePicker,

getMonthDay: getMonthDay

}

 

 

这篇关于小程序日期时间选择组件无bug版,不服来用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/976024

相关文章

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

如何选择适合孤独症兄妹的学校?

在探索适合孤独症儿童教育的道路上,每一位家长都面临着前所未有的挑战与抉择。当这份责任落在拥有孤独症兄妹的家庭肩上时,选择一所能够同时满足两个孩子特殊需求的学校,更显得尤为关键。本文将探讨如何为这样的家庭做出明智的选择,并介绍星贝育园自闭症儿童寄宿制学校作为一个值得考虑的选项。 理解孤独症儿童的独特性 孤独症,这一复杂的神经发育障碍,影响着儿童的社交互动、沟通能力以及行为模式。对于拥有孤独症兄

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用