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

小程序中获取年月日时分的组件

在原生的小程序组件中是没有获取datetime类型的组件的,当你需要设置年月日时分的时候就需要自己定义组件了,

这里使用的uniapp来写的

首先定义wxml层:

<view class="form-item"><text class="form-label required">线索发现时间</text><pickerclass="form-picker"mode="multiSelector":range="range":value="pickerIdx"@change="onDateTimeChange"@columnchange="onColumnChange"><view class="picker-value">{{ formData.findTime || '请选择线索发现时间' }}</view></picker>
</view>

之后就是

JS代码

需要返回五个数据,但是因为日是动态的所以需要getDays()函数来自己获取。

定义数组,有五列,分别是年月日时分

主要就是监听着数组中的五列,数组中的每一列又会变化,每转动一次转盘,就会重新赋值给变量,

export default {data() {/* 五列数据源 */const years   = Array.from({ length: 11 }, (_, i) => 2020 + i);const months  = Array.from({ length: 12 }, (_, i) => i + 1);const hours   = Array.from({ length: 24 }, (_, i) => i);const minutes = Array.from({ length: 60 }, (_, i) => i);return {years, months, hours, minutes,range: [],      // 五列pickerIdx: [0, 0, 0, 0, 0],/* 其余业务字段 */formData: {findTime: '',   // 最终字符串 2025-09-19 14:30location: '',contact: '',description: '',latitude: '',longitude: '',isAnonymous: 0,status: 2,images: []},/* 其余原 data … */};},onLoad(options) {this.initRange();          // 关键:初始化 picker/* 其余 onLoad 逻辑 … */},methods: {/* ---------- 日期时间选择 ---------- */getDays(y, m) {return new Date(y, m, 0).getDate();},initRange() {const now = new Date();const y = now.getFullYear();const m = now.getMonth() + 1;const d = now.getDate();const h = now.getHours();const mm = now.getMinutes();this.pickerIdx = [this.years.indexOf(y),m - 1,d - 1,h,mm];const days = Array.from({ length: this.getDays(y, m) }, (_, i) => i + 1);this.range = [this.years, this.months, days, this.hours, this.minutes];},onColumnChange(e) {const col = e.detail.column;const row = e.detail.value;const idx = [...this.pickerIdx];idx[col] = row;if (col === 0 || col === 1) { // 年或月变化const year = this.years[idx[0]];const month = this.months[idx[1]];const days = Array.from({ length: this.getDays(year, month) }, (_, i) => i + 1);this.range[2] = days;if (idx[2] >= days.length) idx[2] = days.length - 1;this.pickerIdx = idx;}},onDateTimeChange(e) {const idx = e.detail.value;const y = this.years[idx[0]];const m = String(this.months[idx[1]]).padStart(2, '0');const d = String(this.range[2][idx[2]]).padStart(2, '0');const h = String(this.hours[idx[3]]).padStart(2, '0');const mm = String(this.minutes[idx[4]]).padStart(2, '0');this.formData.findTime = `${y}-${m}-${d} ${h}:${mm}`;},}
};

http://www.dtcms.com/a/391229.html

相关文章:

  • Redis热升级秘籍:零停机迁移方案与工具链
  • 时序数据库选型指南深度解析IoTDB架构设计与性能对比
  • springboot超市管理系统的设计与实现(代码+数据库+LW)
  • 让Trae写一个AI的api中继服务
  • 跨国制造业SD-WAN:延迟下降78%,运维成本下降53%
  • MySQL服务启动不成功的可能解决方法
  • 硬解码出现画面回退分析
  • P1068 [NOIP 2009 普及组] 分数线划定-普及-
  • 用python语言如何排大小
  • pycharm连接GitHub,怎么配置 SSH 密钥并改用 SSH 连接
  • ​​[硬件电路-265]:电源系统要考虑的因素包括:不同的输出电压、隔离防干扰、防反、防浪涌、电压可调、电源开关、电池、可充电、低纹波、低噪声、防波动等
  • 【开题答辩全过程】以 基于Python的电影推荐系统为例,包含答辩的问题和答案
  • 格拉姆角场(Gramian Angular Field, GAF)详解
  • 前端开发工具Vue有哪些?常用Vue前端开发工具推荐、Vue开发工具对比与最佳实践分享
  • 基于vue的幼儿园健康管理系统0fz0y(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 第69课 分类任务: 基于BERT训练情感分类与区别二分类本质思考
  • Mysql杂志(二十)——MyISAM索引结构与B树B+树
  • Java 大视界 -- 基于 Java 的大数据实时流处理在金融高频交易数据分析中的应用
  • BonkFun 推出 USD1:Meme 币玩法的新入口
  • flutter在包含ListVIew的滚动列表页面中监听手势
  • Redis 三种集群模式详解
  • 打开hot100
  • Ant-Design Table中使用 AStatisticCountdown倒计时,鼠标在表格上移动时倒计时被重置
  • Linux crontab 定时任务工具使用
  • 阿里云RDS mysql8数据本地恢复,与本地主从同步(容器中)
  • 记录一次mysql启动失败问题解决
  • LeetCode算法练习:35.搜索插入位置
  • (1) 为什么推荐tauri框架
  • 嵌入式面试高频(八)!!!C++语言(嵌入式八股文,嵌入式面经)
  • Spring AI开发指导-工具调用