Vant时间控件精确到秒

Vant-ui里面的时间控件最多精确到分钟,但是项目需求要精确到秒钟,
我们可以用popup弹框和picker选择器自己封装一个时间选择控件精确到秒

下面是封装的效果图

1.components下创建popUpPicker/popUpPicker.vue

<template><div class="popup-pciker-wrap"><van-popup v-model="isPicker" position="bottom" @close="close"><van-pickerref="picker"show-toolbartitle="请选择时间":columns="columns"@change="onChange"@cancel="cancel"@confirm="onConfirm"/></van-popup></div>
</template><script>
export default {name: "popup",props: ["showPicker", "values"],data() {return {isPicker: false,columns: [],Mdays:'',//弹窗关闭时月份所在值Dindex:null};},mounted() {},watch: {isPicker(val) {!val && this.$emit("changeValue");this.columns = [];this.getcolumns();},showPicker(val) {this.isPicker = val;},values(val) {if(val==''){this.Mdays=''this.Dindex=null}},},methods: {getCountDays(year, month) { //获取某年某月多少天var day = new Date(year, month, 0);return day.getDate();},getcolumns() {var strtime = this.values;var date = new Date(strtime.replace(/-/g, "/"));var vmoduletime = date.getTime();if(this.values!=''){var vmoduledate = new Date(vmoduletime);}else{var vmoduledate = new Date();//没有传入时间则默认当前时刻}var Y = vmoduledate.getFullYear() ;var M =vmoduledate.getMonth();var D = vmoduledate.getDate() ;var h = vmoduledate.getHours() ;var m = vmoduledate.getMinutes() ;var s = vmoduledate.getSeconds();console.log(Y , M ,D , h , m , s) //获取每一列索引var year = {}; //获取前后十年数组year.values = [];var Currentday = new Date().getFullYear();for (var i = Currentday - 10; i < Currentday + 10; i++) {year.values.push(i+'年');}year.defaultIndex = year.values.indexOf(Y+'年'); //设置默认选项当前年this.columns.push(year);var month = {}; //获取12月数组month.defaultIndex = M;month.values = Object.keys(Array.apply(null, { length: 13 })).map(function (item) {if (+item + 1 <= 10) {return "0" + item+'月';} else if(+item + 1 == 11){return  + item+'月'}else {return (+item +  0).toString()+'月';}});month.values.splice(0, 1);this.columns.push(month);//获取当月的天数var days = this.getCountDays(Y,this.Mdays==''?M+1:this.Mdays);var day = {}; //创建当月天数数组day.defaultIndex = this.Dindex==null? D - 1:this.Dindex;day.values = Object.keys(Array.apply(null, { length: days+1 })).map(function (item) {if (+item + 1 <= 10) {return "0" + item+'日';}  else if(+item + 1 == 11){return  + item+'日'}else {return (+item +  0).toString()+'日';}});day.values.splice(0, 1);this.columns.push(day);var hour = {}; //创建小时数组hour.defaultIndex = h;hour.values = Object.keys(Array.apply(null, { length: 24 })).map(function (item) {if (+item + 1 <= 10) {return "0" + item+'时';} else if(+item + 1 == 11){return  + item+'时'}else {return (+item +  0).toString()+'时';}});this.columns.push(hour);var mi = {}; //创建分钟数组mi.defaultIndex = m;mi.values = Object.keys(Array.apply(null, { length: 60 })).map(function (item) {if (+item + 1 <= 10) {return "0" + item+'分';} else if(+item + 1 == 11){return  + item+'分'}else {return (+item +  0).toString()+'分';}});this.columns.push(mi);var ss = {}; //创建秒数数组ss.defaultIndex = s;ss.values = Object.keys(Array.apply(null, { length: 60 })).map(function (item) {if (+item + 1 <= 10) {return "0" + item+'秒';} else if(+item + 1 == 11){return  + item+'秒'}else {return (+item +  0).toString()+'秒';}});this.columns.push(ss);},onChange(values, a) {//a为所有列备选项值的数组var days = this.getCountDays(a[0].substr(0,4), a[1].substr(0,2));var newdays = {};newdays.values = Object.keys(Array.apply(null, { length: days+1 })).map(function (item) {if (+item + 1 <= 10) {return "0" + item+'日';} else if(+item + 1 == 11){return  + item+'日'}else {return (+item +  0).toString()+'日';}});newdays.values.splice(0, 1);this.$refs.picker.setColumnValues(2, newdays.values); //设置第三列的值this.$refs.picker.setColumnIndex(2, a[2].substr(0,2) - 1); //设置第三列索引},onConfirm(val, index) {console.log(`当前值:${val});var endval = val[0].substr(0,4) + "-" +val[1].substr(0,2) + "-" + val[2].substr(0,2) +" " +val[3].substr(0,2) + ":" + val[4].substr(0,2) +":" +val[5].substr(0,2);this.$emit("changeValue", endval);this.$emit("close", endval);},cancel() {//选择器关闭// this.$emit("changeValue");},close() {//弹出层关闭var currentM=this.$refs.picker.getColumnValue(1)this.Mdays=currentM.substr(0,2)this.Dindex=this.$refs.picker.getColumnIndex(2)// this.$emit("close");},},
};
</script><style>
.van-picker__cancel {visibility: hidden;
}
</style>

2.使用该组件(引入组件路径,注册组件)

<template><div class="popup-pciker-wrap"><van-button @click="showup">选择时间</van-button> <van-button @click="deltime">清除时间</van-button>时间显示:{{getTime}} <popuppicker :values="getTime"   @changeValue="handelChange" ref="popup" :showPicker="showPicker1" @close="close"/></div>
</template>
<script>
import popuppicker from '../../components/popUpPicker/popUpPicker'    //页面引入组件
export default {components: {popuppicker, //页面注册组件},data() {return {getTime:'',showPicker1: false,};},methods: {showup(){this.showPicker1 = true;}, handelChange(){ //popup弹窗关闭this.showPicker1 = false;             },close(val){//picker选择器点击确定this.getTime=val       },deltime(){this.getTime=''},};
</script>

Vant时间控件精确到秒相关推荐

  1. html小时分钟秒选择器,HTMLbootstrap时间选择器控件精确到秒 datetimepicker控件怎么精确到秒?...

    在使用 HTML 中的 bootstrap datetimepicker 选择器控件时会发现,该插件不能精确到秒钟,那么 bootstrap 时间选择器控件精确到秒能否实现呢? 其实可以进行简单的修改 ...

  2. vant时间控件的使用

    <template><div class="shoukuan"><!-- 头部公共搜索框 --><tabbar title="添 ...

  3. html日期英文状态显示不出来,html 时间控件插件laydate, 显示时分,不显示秒

    概述 项目中使用到了时间控件,不知为何input-->date无法弹出控件,故使用了js插件laydate.根据项目需求,时间要求精度为分,故隐藏秒控件. 参考网友博客,最终实现如下. 代码 l ...

  4. laydate 时间控件去掉秒以及解决在移动端不能滑动的问题

    一.时间控件去掉秒,保留时分 二.时间控件在移动端不能滚动 一.时间控件去掉秒,保留时分 方法一:使用 ready 回调函数 ready 控件在打开时触发.打开控件时让秒消失. <script& ...

  5. elementui时间控件限制可选时间范围(精确到时分秒)

    elementui时间控件限制可选时间范围(精确到时分秒) 我们在开发web端项目时,时间控件用的非常多,限制可选时间也是比较常见的需求,比如已经过去时间不能选,或这未来的时间不可选等,如果仅仅只是限 ...

  6. python日历gui_python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例...

    PyQt5日期时间控件QDateTimeEdit介绍 QDateTimeEdit是一个允许用户编辑日期时间的控件,可以使用键盘上的上下键头按钮来增加或减少日期的时间值,QDateTimeEdit通过s ...

  7. vue时间控件美化成IOS样式(移动端),vux组件datatime添加星期几/周几教程

    input的时间控件有三种类型 属性 Android IOS type="date" 年+月+日(原生UI样式) 年+月+日(滚轮样式) type="datetime&q ...

  8. jqGrid中时间控件input的值赋给点开后的laydate控件

    可以看到上课时间的值是8点-10点 点击时间控件选择时间时,时间控件不会根据已有的时间数据显示默认值,而是显示当前时间? Q:为什么会显示当前时间,怎么解决这个问题? A: 代码如下: getTime ...

  9. HTML5超简单的日期时间控件

    HTML5超简单的日期时间控件 时间都是宝贵的,尤其是开发人员,所以为了节省时间,我直接展示下效果,符合您的要求就采纳,不符合,就不用继续看了! 1.1 日期控件效果: 1.2 时间控件展示: 2.1 ...

最新文章

  1. OC系列foundation Kit基础-NSDate
  2. 分布式数据库解决方案Apache ShardingSphere毕业成为顶级项目
  3. 【codeforces 768F】 Barrels and boxes
  4. 复习支持向量机(SVM)没空看书时,掌握下面的知识就够了
  5. [Hadoop in China 2011] 邵铮:揭秘FaceBook Puma演变及发展
  6. 蓝桥杯 - 序列计数(记忆化搜索)
  7. SAP Cloud Platform上Destination属性为odata_gen的具体用途
  8. allegro下快捷键设置[转贴]
  9. es创建索引数量多了好还是少了好_Elasticsearch性能优化总结
  10. LuoguP5366 [SNOI2017]遗失的答案
  11. Redmi Note10系列配LCD居中挖孔屏:5月26日正式发布
  12. explorer.exe中发生未处理的win32异常
  13. Linux安装gcc和运行代码教程
  14. 2021年中国石油沥青供需及发展趋势分析[图]
  15. 关于STM32单片机延时微妙(delay_us)函数-hal库
  16. 阿里云OSS使用Java上传文件
  17. Python:RSA秘钥生成与加密解密整理
  18. 启动系统提示“NTLDR is missing”的解决办法
  19. C语言程序设计 题目抽签系统
  20. postman,请求前置脚本,Pre-requests Script

热门文章

  1. Maya---反向动力学
  2. Android中canvas学习笔记
  3. 简单介绍一下c++正则表达式
  4. 苹果隐藏应用_苹果备忘录你还没用过吗?千万别再浪费了
  5. python时间序列分析
  6. (二)DDD——在我梦里,我还能让你把我给欺负了?
  7. 可行性研究的成本估算方法
  8. 【Linux学习】远程连接linux
  9. Emscripten 单词_雅思课堂|6大方法,让你高效记单词
  10. 接口接收中文出现%E9%9D%92%E6%B5%B7%E7%9C%81%E6%B5%B7%E8%A5%BF%E