picker-view、微信小程序自定义时间选择器(非官方)
<view class="baseList">
<view class="list clearfix">
<view class="fl listName"><text class="reqIcon">*</text> 参展时间</view>
<view class="listMain fr" bindtap="dateMainBtn">
<!-- <input class="rightInput" placeholder="请选择日期" name='startTime' value="{{timeInput}}"></input> -->
<view>{{timeInput == '' ? '选择时间' : timeInput}}</view>
</view>
<view class="propTimeBody" wx:if="{{propDate}}">
<view class="propTimeMain">
<view class="propTop clearfix">
<text class="fl noBtn" bindtap="noBtnTime">取消</text>
<text>{{year}}-{{month}}-{{day}} {{isDaytime ? "上午" : "下午"}}</text>
<text class="fr okBtn" bindtap="okBtnTime">确定</text>
</view>
<picker-view indicator-style="height: 50px;" style="width: 100%; height: 300px;" value="{{value}}" bindchange="bindChange">
<picker-view-column>
<view wx:for="{{years}}" wx:key="years" style="line-height: 50px; text-align: center;">{{item}}年</view>
</picker-view-column>
<picker-view-column>
<view wx:for="{{months}}" wx:key="months" style="line-height: 50px; text-align: center;">{{item}}月</view>
</picker-view-column>
<picker-view-column>
<view wx:for="{{days}}" wx:key="days" style="line-height: 50px; text-align: center;">{{item}}日</view>
</picker-view-column>
<picker-view-column>
<view class="icon-container" style="line-height: 50px; text-align: center;">
上午
</view>
<view class="icon-container" style="line-height: 50px; text-align: center;">
下午
</view>
</picker-view-column>
</picker-view>
</view>
</view>
</view>
</view>
.baseList{
padding: 40rpx 30rpx 20rpx;
}
.baseList .list{
font-size: 32rpx;
color: #333;
line-height: 80rpx;
margin-bottom: 20rpx;
}
.baseList .list .listName{
text-align: right;
width: 200rpx;
}
.baseList .list .listMain{
position: relative;
width: 470rpx;
padding: 0 20rpx;
text-align: left;
border: 1rpx solid #ddd;
border-radius: 16rpx;
line-height: 80rpx;
height: 80rpx;
}
.propTimeBody{
position: fixed;
left: 0;
top: 0;
z-index: 99;
height: 100%;
width: 100%;
background-color: rgba(0,0,0,.7);
}
.propTimeBody .propTimeMain{
background-color: #fff;
position: absolute;
left: 0;
bottom: 0;
width: 100%;
z-index: 111;
}
.propTimeBody .propTimeMain .propTop{
text-align: center;
padding: 30rpx 20rpx;
font-size: 32rpx;
color: #333;
}
.propTimeBody .propTimeMain .propTop .noBtn{
color: #666;
}
.propTimeBody .propTimeMain .propTop .okBtn{
color: #0084ff;
}
const date = new Date();//获取系统日期
const years = []
const months = []
const days = []
const bigMonth = [1, 3, 5, 7, 8, 10, 12] //将日期分开写入对应数组 //年
var getYear = date.getFullYear()
var getMonth = date.getMonth()
var getDate = date.getDate()
for (let i = getYear - 20; i <= getYear + 20; i++) {
years.push(i);
} //月
for (let i = 1; i <= 12; i++) {
months.push(i);
} //日
for (let i = 1; i <= 31; i++) {
days.push(i);
}
years: years,
year: getYear,
months: months,
month: getMonth+1,
days: days,
day: getDate,
value: [20, getMonth, getDate-1],
isDaytime: true,
timeInput: '',
propDate: false,
dateMainBtn () {
let setYear = this.data.year;
let setMonth = this.data.month;
let setDay = this.data.day
let dateTimeBody = setYear + '-' + setMonth + '-' + setDay
let todays = this.data.isDaytime === true ? '上午' : '下午'
wx.setStorageSync('adminDate', dateTimeBody)
wx.setStorageSync('adminTodays', todays)
this.setData({
propDate: true
})
},
okBtnTime () {
this.setData({
propDate: false,
timeInput: wx.getStorageSync('adminDate') + wx.getStorageSync('adminTodays'),
})
},
noBtnTime () {
this.setData({
propDate: false
})
},
//判断元素是否在一个数组
contains: function (arr, obj) {
var i = arr.length;
while (i--) {
if (arr[i] === obj) {
return true;
}
}
return false;
},
setDays: function (day) {
const temp = [];
for (let i = 1; i <= day; i++) {
temp.push(i)
}
this.setData({
days: temp,
})
},
//选择滚动器改变触发事件
bindChange: function (e) {
const val = e.detail.value;
//判断月的天数
const setYear = this.data.years[val[0]];
const setMonth = this.data.months[val[1]];
const setDay = this.data.days[val[2]]
//console.log(setYear + '-' + setMonth + '-' + setDay);
//闰年
if (setMonth === 2) {
if (setYear % 4 === 0 && setYear % 100 !== 0) {
console.log('闰年')
this.setDays(29);
} else {
console.log('非闰年')
this.setDays(28);
}
} else {
//大月
if (this.contains(bigMonth, setMonth)) {
this.setDays(31)
} else {
this.setDays(30)
}
}
this.setData({
year: setYear,
month: setMonth,
day: setDay,
isDaytime: !val[3]
})
let dateTimeBody = setYear + '-' + setMonth + '-' + setDay
let todays = !val[3] === true ? '上午' : '下午'
wx.setStorageSync('adminDate', dateTimeBody)
wx.setStorageSync('adminTodays', todays)
},
picker-view、微信小程序自定义时间选择器(非官方)的更多相关文章
- 微信小程序----日期时间选择器(自定义精确到分秒或时段)
声明 bug:由于此篇博客是在bindcolumnchange事件中做的值的改变处理,因此会出现当你选择时,没有点击确定,直接取消返回后,会发现选择框的值依然改变.造成原因:这一点就是由于在bindc ...
- 微信小程序 自定义省市选择器
1.把省市数据放在city.js中,city.js放在until目录下 // city.js module.exports = { "province": [ { "ti ...
- 微信小程序日期时间选择器(精确到秒)
<picker mode="multiSelector" value="{{dateTime1}}" bindchange="changeDat ...
- 微信小程序自定义 tabbar
一定的需求情况下,无法使用小程序原生的 tabbar 的时候,需要自行实现一个和 tabbar 功能一模一样的自制组件. 查阅了海量的博客和文档之后,亲自踩坑.总结了三种在不使用微信小程序原生 tab ...
- 微信小程序自定义组件,提示组件
微信小程序自定义组件,这里列举了一个常用的提示自定义组件,调用自定义组件中的方法和字段.仅供参考和学习. 编写组件: 在根目录下添加“components”目录,然后像添加Page页面一样添加自定义组 ...
- 微信小程序——自定义导航栏
微信头部导航栏可能通过json配置: 但是有时候我们项目需求可能需要自定义头部导航栏,如下图所示: 现在具体说一下实现步骤及方法: 步骤: 1.在 app.json 里面把 "navigat ...
- 微信小程序自定义弹窗wcPop插件|仿微信弹窗样式
微信小程序自定义组件弹窗wcPop|小程序消息提示框|toast自定义模板弹窗 平时在开发小程序的时候,弹窗应用场景还是蛮广泛的,但是微信官方提供的弹窗比较有局限性,不能自定义修改.这个时候首先想到的 ...
- 微信小程序-自定义底部导航
代码地址如下:http://www.demodashi.com/demo/14258.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
- 微信小程序自定义tabbar的实现
微信小程序自定义tabbar的实现 目的:当采用微信的自定义tabbar组件的时候,切换的时候会出现闪屏的效果:当使用微信默认的tabbar的时候,限制了tabbar的数量以及灵活配置. 方案:自己动 ...
随机推荐
- 一文入门Kafka,必知必会的概念通通搞定
Kakfa在大数据消息引擎领域,绝对是没有争议的国民老公. 这是kafka系列的第一篇文章.预计共出20篇系列文章,全部原创,从0到1,跟你一起死磕kafka. 本文盘点了 Kafka 的各种术语并且 ...
- Spark GraphX从入门到实战
第1章 Spark GraphX 概述 1.1 什么是 Spark GraphX Spark GraphX 是一个分布式图处理框架,它是基于 Spark 平台提供对图计算和图挖掘简洁易用的而丰 ...
- TypeError: this.xxx.substring is not a function的解决办法
这是因为已经改变了xxx的值的类型,不再是字符串的话将不会拥有substring函数, 我当时这样写的时候,直接将number类型赋予了this.enter,所以导致了错误. 改为这样之后可以使用su ...
- CentOS Linux release 7.7.1908 (Core)--redis安装
1.通过filezilla把安装包扔到linux上,建立一个redis 的目录 2.解压 tar -zxvf redis-4.0.6.tar.gz 3. yum安装gcc依赖 yum install ...
- MySQL实战45讲笔记一
MySQL的基本架构大体可以分为server层和存储引擎层,逻辑架构图如下: Server层除了图中显示的,还包括所有的内置函数(包括日期.时间.数学和加密函数等),存储过程.触发器.视图等跨存储引擎 ...
- java中“”==“” equals hashcode的关系
ava中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比 ...
- 我的.net开发百宝箱
一.Resharper http://www.jetbrains.com/resharper/ 最强悍的VisualStudio的插件,它包括一系列丰富的,能大大增加C#和Visual Basic . ...
- Day12-微信小程序实战-交友小程序-搭建服务器与上传文件到后端
要搞一个小型的cms内容发布系统 因为小程序上线之后,直接对数据库进行操作的话,慧出问题的,所以一般都会做一个管理系统,让工作人员通过这个管理系统来对这个数据库进行增删改查 微信小程序其实给我们提供了 ...
- mysql无限级分类
第一种方案: 使用递归算法,也是使用频率最多的,大部分开源程序也是这么处理,不过一般都只用到四级分类. 这种算法的数据库结构设计最为简单.category表中一个字段id,一个字段fid(父id).这 ...
- Mariadb之日志相关配置
前面我们聊到了mariadb的事务,以及事务隔离级别,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13198186.html:今天我们来聊一聊mariadb的 ...