当前位置: 首页 > news >正文

uniapp写的一个年月日时分秒时间选择功能

图片.png

代码:

<template><view><picker mode="multiSelector" :value="multiIndex" :range="multiRange" @change="onMultiChange"><view class="picker">当前选择:{{ formattedDateTime }}</view></picker></view>
</template><script>
export default {data() {const now = new Date();return {multiIndex: [now.getFullYear() - 1900, // 年份now.getMonth(),           // 月份 (0-11)now.getDate() - 1,        // 日期 (1-31,减1以用于索引)now.getHours(),           // 小时 (0-23)now.getMinutes(),         // 分钟 (0-59)now.getSeconds()          // 秒 (0-59)],multiRange: this.getMultiRange()};},computed: {formattedDateTime() {const year = this.multiRange[0][this.multiIndex[0]];const month = String(this.multiRange[1][this.multiIndex[1]]).padStart(2, '0');const day = String(this.multiRange[2][this.multiIndex[2]]).padStart(2, '0');const hour = String(this.multiRange[3][this.multiIndex[3]]).padStart(2, '0');const minute = String(this.multiRange[4][this.multiIndex[4]]).padStart(2, '0');const second = String(this.multiRange[5][this.multiIndex[5]]).padStart(2, '0');return `${year}-${month}-${day} ${hour}:${minute}:${second}`;}},methods: {getMultiRange() {let yearRange = [];let monthRange = [];let dayRange = [];let hourRange = [];let minuteRange = [];let secondRange = [];// 生成年月日时分秒的数组for (let i = 1900; i <= 2100; i++) yearRange.push(i);for (let i = 1; i <= 12; i++) monthRange.push(i);for (let i = 1; i <= 31; i++) dayRange.push(i);for (let i = 0; i <= 23; i++) hourRange.push(i);for (let i = 0; i <= 59; i++) minuteRange.push(i);for (let i = 0; i <= 59; i++) secondRange.push(i);return [yearRange, monthRange, dayRange, hourRange, minuteRange, secondRange];},onMultiChange(e) {this.multiIndex = e.detail.value;}}
};
</script><style>
.picker {padding: 10px;background-color: #fff;text-align: center;
}
</style>
  1. 部分
<template><view><picker mode="multiSelector" :value="multiIndex" :range="multiRange" @change="onMultiChange"><view class="picker">当前选择:{{ formattedDateTime }}</view></picker></view>
</template>
<view>: 是一个容器元素,用于包裹其他元素。
<picker>: 用于创建一个多级选择器,mode="multiSelector" 表示选择多个值。:value="multiIndex": 绑定当前选择的索引数组。:range="multiRange": 绑定可选择的值数组。@change="onMultiChange": 当选择值变化时触发 onMultiChange 方法。
<view class="picker">: 显示当前选择的日期和时间,使用双花括号 {{ formattedDateTime }} 来动态显示格式化后的日期时间。
<script>
export default {data() {const now = new Date();return {multiIndex: [now.getFullYear() - 1900, // 年份now.getMonth(),           // 月份 (0-11)now.getDate() - 1,        // 日期 (1-31,减1以用于索引)now.getHours(),           // 小时 (0-23)now.getMinutes(),         // 分钟 (0-59)now.getSeconds()          // 秒 (0-59)],multiRange: this.getMultiRange()};},computed: {formattedDateTime() {const year = this.multiRange[0][this.multiIndex[0]];const month = String(this.multiRange[1][this.multiIndex[1]]).padStart(2, '0');const day = String(this.multiRange[2][this.multiIndex[2]]).padStart(2, '0');const hour = String(this.multiRange[3][this.multiIndex[3]]).padStart(2, '0');const minute = String(this.multiRange[4][this.multiIndex[4]]).padStart(2, '0');const second = String(this.multiRange[5][this.multiIndex[5]]).padStart(2, '0');return `${year}-${month}-${day} ${hour}:${minute}:${second}`;}},methods: {getMultiRange() {let yearRange = [];let monthRange = [];let dayRange = [];let hourRange = [];let minuteRange = [];let secondRange = [];// 生成年月日时分秒的数组for (let i = 1900; i <= 2100; i++) yearRange.push(i);for (let i = 1; i <= 12; i++) monthRange.push(i);for (let i = 1; i <= 31; i++) dayRange.push(i);for (let i = 0; i <= 23; i++) hourRange.push(i);for (let i = 0; i <= 59; i++) minuteRange.push(i);for (let i = 0; i <= 59; i++) secondRange.push(i);return [yearRange, monthRange, dayRange, hourRange, minuteRange, secondRange];},onMultiChange(e) {this.multiIndex = e.detail.value;}}
};
</script>

data()

const now = new Date();: 获取当前的日期和时间。
multiIndex: 初始化为当前时间的索引数组。年份减去1900,以便与年份范围的索引相匹配。月份直接使用 getMonth(),因为它从0开始(0表示1月)。日期、小时、分钟和秒直接取当前值。

computed

formattedDateTime: 计算属性,用于格式化当前选择的日期和时间。通过索引获取年、月、日、时、分、秒,并使用 padStart(2, '0') 确保它们都是两位数。返回格式化后的字符串,例如 YYYY-MM-DD HH:mm:ss。

methods

getMultiRange(): 生成年、月、日、时、分、秒的数组。使用循环生成各个范围的值(例如年份1900到2100)。返回一个数组,包含所有的时间选择范围。onMultiChange(e): 处理选择器的变化。更新 multiIndex,以便反映用户的选择。
<style>
.picker {padding: 10px;background-color: #fff;text-align: center;
}
</style>

.picker: 定义选择器的样式,设置内边距、背景颜色和文本对齐方式。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux-进程管理【重点】
  • elementUI之不会用
  • 《C Primer Plus》第 11 章复习题和编程练习
  • STM32 RTC实时时钟
  • 如何看待IBM中国研发部裁员!
  • 惩罚矩阵?动态规划是如何爱上矩阵的
  • rman 备份尽量使用 backup database plus archivelog
  • 数据库进阶:2.索引
  • 【 html+css 绚丽Loading 】 000045 太极旋流轮
  • 【SpringCloud】 实现负载均衡
  • 【C++ 09】继承
  • Path系统环境变量和CLASSPATH环境变量
  • 存储课程学习笔记2_借助内核插入一个文件系统,用文件夹下测试文件系统(mount文件系统到目录下是入口)
  • yolov5-6.2 在 rk3399pro 上的移植
  • 力扣面试150 三角形最小路径和 DFS 记忆化搜索 DP 滚动数组优化DP
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • Codepen 每日精选(2018-3-25)
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Elasticsearch 参考指南(升级前重新索引)
  • IP路由与转发
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Laravel Mix运行时关于es2015报错解决方案
  • Odoo domain写法及运用
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Spring框架之我见(三)——IOC、AOP
  • SQLServer之索引简介
  • vue数据传递--我有特殊的实现技巧
  • vue自定义指令实现v-tap插件
  • 工作手记之html2canvas使用概述
  • 前端设计模式
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 深度解析利用ES6进行Promise封装总结
  • 温故知新之javascript面向对象
  • 线性表及其算法(java实现)
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • (2)空速传感器
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Python) SOAP Web Service (HTTP POST)
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (含笔试题)深度解析数据在内存中的存储
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转)VC++中ondraw在什么时候调用的
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .NET BackgroundWorker
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • /proc/stat文件详解(翻译)
  • @JsonFormat与@DateTimeFormat注解的使用
  • @NotNull、@NotEmpty 和 @NotBlank 区别
  • [ 第一章] JavaScript 简史