一。根据需要点击选择时间日期,效果如下图:

(1)新建一个dateTimePicker.js文件

  1. function withData(param){
  2. return param < 10 ? '0' + param : '' + param;
  3. }
  4. function getLoopArray(start,end){
  5. var start = start || 0;
  6. var end = end || 1;
  7. var array = [];
  8. for (var i = start; i <= end; i++) {
  9. array.push(withData(i));
  10. }
  11. return array;
  12. }
  13. function getMonthDay(year,month){
  14. var flag = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0), array = null;
  15.  
  16. switch (month) {
  17. case '01':
  18. case '03':
  19. case '05':
  20. case '07':
  21. case '08':
  22. case '10':
  23. case '12':
  24. array = getLoopArray(1, 31)
  25. break;
  26. case '04':
  27. case '06':
  28. case '09':
  29. case '11':
  30. array = getLoopArray(1, 30)
  31. break;
  32. case '02':
  33. array = flag ? getLoopArray(1, 29) : getLoopArray(1, 28)
  34. break;
  35. default:
  36. array = '月份格式不正确,请重新输入!'
  37. }
  38. return array;
  39. }
  40. function getNewDateArry(){
  41. // 当前时间的处理 年月日时分秒
  42. var newDate = new Date();
  43. var year = withData(newDate.getFullYear()),
  44. mont = withData(newDate.getMonth() + 1),
  45. date = withData(newDate.getDate()),
  46. hour = withData(newDate.getHours()),
  47. minu = withData(newDate.getMinutes());
  48. seco = withData(newDate.getSeconds());
  49. return [year, mont, date, hour, minu,seco];
  50. }
  51. function dateTimePicker(startYear,endYear,date) {
  52. // 返回默认显示的数组和联动数组的声明
  53. var dateTime = [], dateTimeArray = [[],[],[],[],[],[]];
  54. var start = startYear || 1978;
  55. var end = endYear || 2100;
  56.  
  57. //处理传过来的字符串转化为数组
  58. let dataArr = date.split(" ")[0].split('/')
  59. let time = date.split(" ")[1].split(':')
  60. // 默认开始显示数据 如果把自定义值传过来的话就使用自定义时间 否则用当前时间 ...dataArr数组解构
  61. var defaultDate = date ? [...dataArr, ...time] : getNewDateArry();
  62.  
  63. // 处理联动列表数据
  64. /*年月日 时分秒*/
  65. dateTimeArray[0] = getLoopArray(start,end);
  66. dateTimeArray[1] = getLoopArray(1, 12);
  67. dateTimeArray[2] = getMonthDay(defaultDate[0], defaultDate[1]);
  68. dateTimeArray[3] = getLoopArray(0, 23);
  69. dateTimeArray[4] = getLoopArray(0, 59);
  70. dateTimeArray[5] = getLoopArray(0, 59);
  71.  
  72. //遍历dateTimeArray数组
  73. dateTimeArray.forEach((current,index) =>{
  74. //匹配defaultDate[index]值在current数组中的位置
  75. dateTime.push(current.indexOf(defaultDate[index]))
  76. });
  77.  
  78. return {
  79. dateTimeArray: dateTimeArray,
  80. dateTime: dateTime
  81. }
  82. }
  83. module.exports = {
  84. dateTimePicker: dateTimePicker,
  85. getMonthDay: getMonthDay
  86. }

(2)需要用到的页面中

  1. <view class="warning-form-item">
  2. <view class="warning-title">上门时间</view>
  3. <picker class="warning-input" mode="multiSelector" :range="dateTimeArray" v-model="dateTime" @change="change" @columnchange="columnchange">
  4. <view class="inp-box">
  5. <input type="text" disabled="true" v-model="upTower" placeholder="请选择时间" placeholder-class="inputPlace" />
  6. </view>
  7. </picker>
  8. </view>

(3)引入js文件,并调取方法

  1. const dateTimePicker = require('@/utils/dateTimePicker.js')
  2. onLoad(){
  3.   let date = new Date(),
  4. Y = date.getFullYear() + '/',
  5. M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '/',
  6. D = date.getDate() + ' ',
  7. h = '10' + ':',
  8. // m = date.getMinutes() + ':',
  9. // s = date.getSeconds()
  10. m = '00'+ ':',
  11. s = '00';
  12. let arr = Y+M+D + h + m +s
  13.  
  14. let obj = dateTimePicker.dateTimePicker(this.startYear, this.endYear,arr)
  15. this.dateTimeArray = obj.dateTimeArray
  16. this.dateTime = obj.dateTime
  17. }
    method:{

//时间格式化
withData(param){
  return param < 10 ? '0' + param : '' + param;
},
change(e){
  let value = []
  e.detail.value.forEach((val,index) => {
    value.push(this.withData(val))
  })
  console.log(value,'value')
  let m = Number(value[1])+1 ;
  let d = Number(value[2])+1 ;
  if(m<10) m = '0'+m
  if(d<10) d = '0'+d

  let dateArray = "20" + value[0] + "-" + m + "-" + d + " " + value[3] + ":" + value[4]+ ":" + value[5]
  this.upTower = dateArray
  console.log(this.upTower,'this.upTower')
  this.form.visitTime = dateArray
},
columnchange(e){
  let dateArr = this.dateTimeArray
  let arr = this.dateTime
  //滑动所在列的数据并对其值进行更新
  arr[e.detail.column] = e.detail.value
  //更新展示月份对应的天数(28 or 29 or 30 or 31)
  dateArr[2] = dateTimePicker.getMonthDay(dateArr[0][arr[0]], dateArr[1][arr[1]])
  //最后把最新的数值赋值到dateTimeArray
  this.dateTimeArray = dateArr
  this.dateTime = arr
},

}

二。根据需要点击选择日期,效果如下:

  1. <view class="warning-form-item">
  2. <view class="warning-title">选择时间</view>
  3. <view class="uni-list-cell-db warning-inputs">
  4. <picker mode="date" :value="date" :start="startDate" :end="endDate" @cancel="cancel" @change="bindDateChange">
  5. <view class="pick_item">
  6. <view :class="is_writez? 'uni-input':'clo-color' ">{{unitData}}</view>
  7. </view>
  8. </picker>
  9. </view>
  10. <image class="per-shimg" src="../../../static/images/more_n.png" mode="">
  11. </view>
  1. bindDateChange(e) {
  2. this.is_writez = true
  3. this.date = e.detail.value
  4. this.unitData = this.date
  5. this.visitor.checkInTime = this.unitData
  6. },
  7. cancel(){
  8. this.unitData = "选择时间"
  9. this.date = ''
  10. },

uniapp微信小程序 选择日期时间的更多相关文章

  1. uniapp 微信小程序 配置分享朋友和朋友圈

    uniapp 微信小程序 配置分享朋友和朋友圈 首先在小程序中配置微信分享,和微信朋友圈, onShareAppMessage, onShareTimeline 这两个API 和 onLoad 同级目 ...

  2. 【重点突破】—— UniApp微信小程序开发教程学习Three

    一.实战 HBuilderX:在微信小程序中运行页面,需要设置->安全 开启微信小程序服务端口,HBuilder工具->设置->配置程序路径 网络请求.模板语法.打开页面.页面传参 ...

  3. 【重点突破】—— UniApp 微信小程序开发官网学习One

    一.初步认识 uni-app官网:https://uniapp.dcloud.io/component/README HBuilderX官方IDE下载地址: http://www.dcloud.io/ ...

  4. 01 uniapp/微信小程序 项目day01

    一.起步 1.1 配置uni-app开发环境 什么是uni-app,就是基于vue的一个开发框架,可以将我们写的一套代码,同时发布到ios.安卓.小程序等多个平台 官方推荐使用Hbuilderx来写u ...

  5. uni-app微信小程序开发之引入腾讯视频小程序播放插件

    登录微信小程序管理后台添加腾讯视频播放插件: 正式开始使用腾讯视频小程序插件之前需先在微信公众平台 -> 第三方设置 -> 插件管理处添加插件,如下图所示: 在uni-app中引入插件代码 ...

  6. 【重点突破】—— UniApp 微信小程序开发官网学习Two

    一.使用Vue.js注意事项 Vue.js在uni-app中使用的差异: 新增:uni-app除了支持Vue实例的生命周期,还支持应用启动.页面显示等生命周期 受限:发布到H5时支持所有vue的语法, ...

  7. uniapp微信小程序获取当前用户手机号码(前端)

    按钮触发获取用户信息 uniapp中与微信小程序官网所写会不同, <button open-type="getPhoneNumber" @getphonenumber=&qu ...

  8. uni-app微信小程序登录授权

    微信小程序授权是非常简单和常用的功能,但为了方便,还是在此记录一下要点: 首先是需要用到一个授权按钮来触发获取用户信息授权: 关键在于 open-type 为 getUserInfo , 然后有个@g ...

  9. uniapp微信小程序canvas绘图插入网络图片不显示

    网络图片缓存 在uni中wx可以用uni代替 无区别: 先把要插入的网络图片缓存(getImageInfo); let context = uni.createCanvasContext('first ...

随机推荐

  1. PAT (Basic Level) Practice 1006 换个格式输出整数 分数 15

    让我们用字母 B 来表示"百".字母 S 表示"十",用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数. ...

  2. 面向制造企业普适性ERP、MES类产品为什么那么难找?

    标准化与个性化之间的矛盾怎么可能通过普适性的ERP.MES系统来解决?为什么难?就跟你找一套适合所有人穿的衣服一样难,事实上这个比找衣服更难!人与人之间高矮胖瘦各不相同.肤色体型各有差异,把同一套衣服 ...

  3. Petrozavodsk Winter Training Camp 2016: Moscow SU Trinity Contest

    题目列表 A.ABBA E.Elvis Presley G. Biological Software Utilities J. Burnished Security Updates A.ABBA 题意 ...

  4. 记一次 .NET 某工控视觉软件 非托管泄漏分析

    一:背景 1.讲故事 最近分享了好几篇关于 非托管内存泄漏 的文章,有时候就是这么神奇,来求助的都是这类型的dump,一饮一啄,莫非前定.让我被迫加深对 NT堆, 页堆 的理解,这一篇就给大家再带来一 ...

  5. Java学习之路:运算符

    2022-10-10 10:34:08 1 运算符 算术运算符:+, -, *, /, %, ++, -- 赋值运算符:= 关系运算符:>, <, >=, <=, ==, != ...

  6. 项目管理构建工具——Maven(高阶篇)

    项目管理构建工具--Maven(高阶篇) 我们在之前的文章中已经基本了解了Maven,但也仅仅只止步于了解 Maven作为我们项目管理构建的常用工具,具备许多功能,在这篇文章中我们来仔细介绍 分模块开 ...

  7. Can not set int field xxx to java.lang.Long 错误

    Can not set int field xxx to java.lang.Long 错误 这个错误其实是因为Java程序和MySQL表中字段的属性匹配不一致 我的报错是Can not set ja ...

  8. Scanner的用法 从键盘输入

    先导入包 import java.util.Scanner; 后输入 Scanner Sc=new Scanner(System.in); //(Sc可以自定义,无实质意义) int i; i=Sc. ...

  9. 配置文件yaml和ini

    前言 本文主要介绍配置文件yaml和ini的读取. 一.yaml文件 YAML是一个可读性高,易于理解,用来表达数据序列化的格式.语法与python的语法类似.文件后缀  .yaml 下面是yaml文 ...

  10. SpringCloud微服务实战——搭建企业级开发框架(四十八):【移动开发】整合uni-app搭建移动端快速开发框架-使用第三方UI框架

      uni-app默认使用uni-ui全端兼容的.高性能UI框架,在我们开发过程中可以满足大部分的需求了,并且如果是为了兼容性,还是强烈建议使用uni-ui作为UI框架使用.   如果作为初创公司,自 ...