uniapp微信小程序 选择日期时间
一。根据需要点击选择时间日期,效果如下图:

(1)新建一个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 = [], dateTimeArray = [[],[],[],[],[],[]];
var start = startYear || 1978;
var end = endYear || 2100;
//处理传过来的字符串转化为数组
let dataArr = date.split(" ")[0].split('/')
let time = date.split(" ")[1].split(':')
// 默认开始显示数据 如果把自定义值传过来的话就使用自定义时间 否则用当前时间 ...dataArr数组解构
var defaultDate = date ? [...dataArr, ...time] : getNewDateArry();
// 处理联动列表数据
/*年月日 时分秒*/
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数组
dateTimeArray.forEach((current,index) =>{
//匹配defaultDate[index]值在current数组中的位置
dateTime.push(current.indexOf(defaultDate[index]))
});
return {
dateTimeArray: dateTimeArray,
dateTime: dateTime
}
}
module.exports = {
dateTimePicker: dateTimePicker,
getMonthDay: getMonthDay
}
(2)需要用到的页面中
<view class="warning-form-item">
<view class="warning-title">上门时间</view>
<picker class="warning-input" mode="multiSelector" :range="dateTimeArray" v-model="dateTime" @change="change" @columnchange="columnchange">
<view class="inp-box">
<input type="text" disabled="true" v-model="upTower" placeholder="请选择时间" placeholder-class="inputPlace" />
</view>
</picker>
</view>
(3)引入js文件,并调取方法
const dateTimePicker = require('@/utils/dateTimePicker.js')
onLoad(){
let date = new Date(),
Y = date.getFullYear() + '/',
M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '/',
D = date.getDate() + ' ',
h = '10' + ':',
// m = date.getMinutes() + ':',
// s = date.getSeconds()
m = '00'+ ':',
s = '00';
let arr = Y+M+D + h + m +s
let obj = dateTimePicker.dateTimePicker(this.startYear, this.endYear,arr)
this.dateTimeArray = obj.dateTimeArray
this.dateTime = obj.dateTime
}
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
},
}
二。根据需要点击选择日期,效果如下:

<view class="warning-form-item">
<view class="warning-title">选择时间</view>
<view class="uni-list-cell-db warning-inputs">
<picker mode="date" :value="date" :start="startDate" :end="endDate" @cancel="cancel" @change="bindDateChange">
<view class="pick_item">
<view :class="is_writez? 'uni-input':'clo-color' ">{{unitData}}</view>
</view>
</picker>
</view>
<image class="per-shimg" src="../../../static/images/more_n.png" mode="">
</view>
bindDateChange(e) {
this.is_writez = true
this.date = e.detail.value
this.unitData = this.date
this.visitor.checkInTime = this.unitData
},
cancel(){
this.unitData = "选择时间"
this.date = ''
},
uniapp微信小程序 选择日期时间的更多相关文章
- uniapp 微信小程序 配置分享朋友和朋友圈
uniapp 微信小程序 配置分享朋友和朋友圈 首先在小程序中配置微信分享,和微信朋友圈, onShareAppMessage, onShareTimeline 这两个API 和 onLoad 同级目 ...
- 【重点突破】—— UniApp微信小程序开发教程学习Three
一.实战 HBuilderX:在微信小程序中运行页面,需要设置->安全 开启微信小程序服务端口,HBuilder工具->设置->配置程序路径 网络请求.模板语法.打开页面.页面传参 ...
- 【重点突破】—— UniApp 微信小程序开发官网学习One
一.初步认识 uni-app官网:https://uniapp.dcloud.io/component/README HBuilderX官方IDE下载地址: http://www.dcloud.io/ ...
- 01 uniapp/微信小程序 项目day01
一.起步 1.1 配置uni-app开发环境 什么是uni-app,就是基于vue的一个开发框架,可以将我们写的一套代码,同时发布到ios.安卓.小程序等多个平台 官方推荐使用Hbuilderx来写u ...
- uni-app微信小程序开发之引入腾讯视频小程序播放插件
登录微信小程序管理后台添加腾讯视频播放插件: 正式开始使用腾讯视频小程序插件之前需先在微信公众平台 -> 第三方设置 -> 插件管理处添加插件,如下图所示: 在uni-app中引入插件代码 ...
- 【重点突破】—— UniApp 微信小程序开发官网学习Two
一.使用Vue.js注意事项 Vue.js在uni-app中使用的差异: 新增:uni-app除了支持Vue实例的生命周期,还支持应用启动.页面显示等生命周期 受限:发布到H5时支持所有vue的语法, ...
- uniapp微信小程序获取当前用户手机号码(前端)
按钮触发获取用户信息 uniapp中与微信小程序官网所写会不同, <button open-type="getPhoneNumber" @getphonenumber=&qu ...
- uni-app微信小程序登录授权
微信小程序授权是非常简单和常用的功能,但为了方便,还是在此记录一下要点: 首先是需要用到一个授权按钮来触发获取用户信息授权: 关键在于 open-type 为 getUserInfo , 然后有个@g ...
- uniapp微信小程序canvas绘图插入网络图片不显示
网络图片缓存 在uni中wx可以用uni代替 无区别: 先把要插入的网络图片缓存(getImageInfo); let context = uni.createCanvasContext('first ...
随机推荐
- python_flask开发环境设置
flask开发环境设置,在powershell终端窗口,可以通过一下方式设置: # 设置当前app实例 $env:FLASK_APP="app:create_app()" #将当前 ...
- SECS半导体设备通讯-4 GEM通信标准
一 概述 GEM标准定义了通信链路上的半导体设备的行为. SECS-II标准定义了在主机和设备之间交换的消息和相关数据项.GEM标准则定义了在哪种情况下应该使用哪些SECS-II消息以及由此产生的结果 ...
- 利用FastReport传递图片参数,在报表上展示签名信息
在一个项目中,客户要求对报表中的签名进行仿手写的签名处理,因此我们原先只是显示相关人员的姓名的地方,需要采用手写方式签名,我们的报表是利用FastReport处理的,在利用楷体处理的时候,开发展示倒是 ...
- 【C++】spdlog光速入门,C++logger最简单最快的库
参考文档:https://spdlog.docsforge.com/master/ spdlog简介 Very fast, header only, C++ logging library. 一个he ...
- .NET周报【10月第1期 2022-10-11】
本周精选 继C#实现await/async无栈协程几年后,davidwrighton实现了.NET绿色线程(有栈协程)的原型 https://github.com/dotnet/runtimelab/ ...
- How to get the return value of the setTimeout inner function in js All In One
How to get the return value of the setTimeout inner function in js All In One 在 js 中如何获取 setTimeout ...
- go-zero docker-compose 搭建课件服务(三):编写courseware api服务
0.转载 go-zero docker-compose 搭建课件服务(三):编写courseware api服务 0.1源码地址 https://github.com/liuyuede123/go-z ...
- python不确定性计算之粗糙集属性约简
粗糙集属性约简 本实验同时采用区别矩阵和依赖度约简. 在依赖度约简中,设置依赖度计算函数和相对约简函数,对读取的数据进行处理,最后根据依赖度约简. 在读取数据后判断有无矛盾,若有则进行决策表分解,然后 ...
- AngouriMath: 用于C#和F#的开源跨平台符号代数库
AngouriMath是一个MIT协议开源符号代数库.也就是说,通过AngouriMath,您可以自动求解方程.方程组.微分.从字符串解析.编译表达式.处理矩阵.查找极限.将表达式转换为LaTeX,以 ...
- day12-Servlet02
Servlet02 6.GET和POST请求的分发处理 开发Servlet,通常编写doGet,doPost方法.来对表单的get和post请求进行分发处理 例子 在web文件夹下面创建一个html页 ...