小程序日期加时间筛选组件

新建component->date-time-picker
.wxml

<picker mode="multiSelector" class="{{className}}" name="{{name}}" value="{{multiSelectdArray}}" range="{{multiDateTime}}" bindcolumnchange="handleColumnChange" bindchange="handleValueChange" bindcancel="handleCancel"><slot></slot>
</picker>

.json

{"component": true,"usingComponents": {}
}

.js

//date-time-picker.js
// component/date-time-picker/date-time-picker.js
Component({options: {styleIsolation: 'apply-shared' //调用页面控制组件样式},properties: {name: String,className: String,startYear: String,endYear: String,value: String},/*** 组件的初始数据*/data: {multiArray:[],multiSelectdArray: [0, 0, 0, 0, 0],},observers: {},ready: function(e) {this._formDateTime();},/*** 组件的方法列表*/methods: {//格式化日期_formDateTime(){// 默认开始显示数据var nowDateTime = this.properties.value ? [...this.properties.value.split(' ')[0].split('-'), ...this.properties.value.split(' ')[1].split(':')] : this._getNewDateArry();var multiDateTime = [[],[],[],[],[]];var startYear = this.properties.startYear || nowDateTime[0];var endYear = this.data.properties || parseInt(nowDateTime[0]) + 5;// 处理联动列表数据/* 年月日 时分秒 */ multiDateTime[0] = this._getLoopArray(startYear, endYear, '年');multiDateTime[1] = this._getLoopArray(1, 12, '月');multiDateTime[2] = this._getMonthDay(nowDateTime[0], nowDateTime[1], '日');multiDateTime[3] = this._getLoopArray(0, 23, '时');multiDateTime[4] = this._getLoopArray(0, 59, '分');// multiDateTime[5] = this._getLoopArray(0, 59, '秒');var multiSelectdArray = this._getMultiSelectdArray(multiDateTime, nowDateTime);this.setData({multiDateTime: multiDateTime,multiSelectdArray: multiSelectdArray,});},/* 查询选中状态数组 */_getMultiSelectdArray(multiDateTime, nowDateTime){let multiSelectdArray = this.data.multiSelectdArray;for (let i in multiDateTime) {for (let k in multiDateTime[i]) {var a = multiDateTime[i][k];if(a.replace(/[\u4e00-\u9fa5]/g, '') == nowDateTime[i]){multiSelectdArray[i] = k;}}}return multiSelectdArray;},/* 获取起始数组 */_getLoopArray(start, end, name){var name = name || '';var start = start || 0;var end = end || 1;var array = [];for (var i = start; i <= end; i++) {array.push(this._withData(i) + name);}return array;},/* 获取每月天数 */_getMonthDay(year, month, name){var name = name || 0;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 = this._getLoopArray(1, 31, name)break;case '04':case '06':case '09':case '11':array = this._getLoopArray(1, 30, name)break;case '02':array = flag ? this._getLoopArray(1, 29, name) : this._getLoopArray(1, 28, name)break;default:array = '月份格式不正确,请重新输入!'}return array;},/* 获取当前时间 */_getNewDateArry(){// 当前时间的处理var newDate = new Date();var year = this._withData(newDate.getFullYear()),mont = this._withData(newDate.getMonth() + 1),date = this._withData(newDate.getDate()),hour = this._withData(newDate.getHours()),minu = this._withData(newDate.getMinutes());// seco = this._withData(newDate.getSeconds());return [year, mont, date, hour, minu];},_stringToDate(str) {str = str.replace(/-/g, "/");return new Date(str);},/* 数据左边加0 */_withData(param){return param < 10 ? '0' + param : '' + param;},/* 切换时间 */handleColumnChange(e) {var multiSelectdArray = this.data.multiSelectdArray;if(e.detail.column <= 1){var multiDateTime = this.data.multiDateTime;var year = this.data.multiArray[multiSelectdArray[0]];var month = this._withData(e.detail.value + 1);multiDateTime[2] = this._getMonthDay(year, month, '日');this.setData({multiDateTime: multiDateTime});}multiSelectdArray[e.detail.column] = e.detail.value;this.setData({multiSelectdArray: multiSelectdArray});},/* 改变picker值 */handleValueChange(e){var _this = this;let dateArr = [], multiSelectdArray = [];for (let i in e.detail.value) {let v = _this.data.multiDateTime[i][e.detail.value[i]];v = v.replace(/[\u4e00-\u9fa5]/g, '');multiSelectdArray.push(e.detail.value[i]);dateArr.push(v.toString());}_this.setData({multiSelectdArray: multiSelectdArray //设置下拉选中状态});let defaultDateTime = dateArr[0] + "-" + dateArr[1] + "-" + dateArr[2] + " " + dateArr[3] + ":" + dateArr[4];_this.triggerEvent('change', {date: defaultDateTime})},/* 取消 */handleCancel(e){var _this = this;_this.triggerEvent('cancel', {})}}
})

页面引用时
.wxml

<date-time-picker value="{{value}}" startYear="2019" endYear="2030" bind:change="handleChange">{{value}}</date-time-picker>

.js


Page({/*** 页面的初始数据*/data: {value: ""},handleChange(e) {this.setData({value: e.detail.date})},
}),
getDate(){var now = new Date();var month = now.getMonth() + 1;var day = now.getDate();var hour = now.getHours();var min = now.getMinutes();if (month < 10) {month = "0" + month;}if (day < 10) {day = "0" + day;}if (hour < 10) {hour = "0" + hour;}if (min < 10) {min = "0" + min;}return now.getFullYear() + "-" + month + "-" + day + " " + hour + ":" + min},

小程序日期加时间筛选组件相关推荐

  1. 创建微信小程序日期和时间的组件

    效果如下 微信小程序 1.首先创建一个components,接着创建一个文件picker 2.在picker.wxml文件里写入: <picker mode="multiSelecto ...

  2. 微信小程序日期与时间选择器

    最近在开发一款微信小程序,需要用到里面的时间选择器(picker),根据它本身的特点以及需要开发的内容,我对时间选择器做了一个简单的demo,大家可以看一下效果图. 效果图: 在微信小程序中,文件按照 ...

  3. 微信小程序 - 日期(起止)选择器组件

    原文链接 传送门 2019-01-03 : 修复了日期day-1,新增了年月日(除去时分秒),删除了不必要的touchmove 新增: column: ""(年月日) 配置: pi ...

  4. 小程序日期(日历)时间 选择器组件

    封装一个小程序日期(日历)时间 选择器组件 简要说明: 一共两个版本 ,date-time-picker 和 date-time-picker-plus. date-time-picker 弹窗层是 ...

  5. 微信小程序日期时分组件(年月日时分)--复制即用

    微信小程序日期组件(年月日时分)–复制即用 如图所示效果 第一步新建picker组件文件 1,pickerTime.js组件代码内容 // component/pickerTime/pickerTim ...

  6. 微信小程序时间加法_微信小程序获取系统时间、时间戳、时间时间戳加减

    微信小程序获取系统时间.时间戳.时间时间戳加减,微信小程序获取明天时间 //获取当前时间戳 var timestamp = Date.parse(new Date()); timestamp = ti ...

  7. 微信小程序日期午别排班表

    微信小程序日期午别排班表 1.util.js //获取几天后日期 function dateCount(arg,date) {var date1 = arg;var date2 = new Date( ...

  8. 初级前端小程序项目加载速度优化

    这份文字是根据近期团队做来问丁香医生 SPA 和 丁香医生小程序 加载速度优化的经历整理而成. 效果 古人有一句话叫做:治感冒看疗效.既然是关于速度优化的,我们就先来看一下优化的效果. 来问丁香医生 ...

  9. 微信小程序渲染实时时间

    微信小程序渲染实时时间 1.看看在框架目录中是否有util文件夹,它用来存放工具栏的JavaScript函数 2.在要获取时间的.js文件中加载util.js文件 3.在onload方法中,调用uti ...

最新文章

  1. simpledateformat 毫秒_阿里巴巴 | 为啥代码中禁用static修饰SimpleDateFormat?
  2. Java对【JSON数据的解析】--官方解析法
  3. windows安装两个版本JDK
  4. SOFAMosn 无损重启/升级
  5. Linux双网卡NAT共享上网
  6. 趣学python3(42)--将字符串格式日期转换为excel的日期格式
  7. java.lang.IllegalStateException: Calling [asyncError()] is not valid for a request with Async state
  8. Pygame实战项目:用300行代码写出贪吃蛇小游戏
  9. 风机桨叶故障诊断(三) 识别桨叶——初步构建BP神经网络
  10. 信息学奥赛一本通 1164:digit函数
  11. 吴恩达深度学习4.2笔记_Convolutional Neural Networks_深度卷积模型
  12. 当罗密欧遇到朱丽叶... ...当指针遇到数组
  13. 使用Windows批处理文件递归删除当前路径下的指定文件夹
  14. 生物信息常用网站(数据库)
  15. 浙江大学2017年数学分析考研试题
  16. 域名解析邮箱服务器地址,邮件域名设置解析
  17. 开放平台API安全设计方案
  18. 写字机器人制作教程 midt-bot
  19. Kanzi 的开机优化
  20. linux读书摘要--正规表示法与文件格式化处理

热门文章

  1. 在Matlab图片里输入数学公式、符号和希腊字母等
  2. 用Python画小猪佩奇,看完别说你不会
  3. 金立否认裁定破产清算;罗永浩力挽锤子科技负债危局;ofo称现场退押金与线上无异丨雷锋早报...
  4. matlab腔内光子寿命,光子在腔内的平均寿命
  5. 分享三套美团面试经历+简单答案
  6. 解谜2019文娱产业,猫眼的互联网升级方法论
  7. linux如何判断网线插入_网卡如何识别10M/100M,如何检测网线插入
  8. 【数理逻辑与集合论】第一章 命题逻辑
  9. 河北大学计算机学院李珍,电气学院教师暑期参加2019年河北省高校智慧教学暨“金课”建设研讨会...
  10. 【数据库系统】第一部分 数据库基础(3) 关系数据库标准语言SQL(7) 视图