uniapp实现年月日时分秒选择器

需要实现的:

代码:

<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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王旭晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值