uni写日期选择器(月-日 周几 时间)

<template>
  <view>
    <picker mode="multiSelector" :value="dateTimeIndex" :range="dateTimeArray" range-key="name"
      @change="dateTimeChange">
      <view class="uni-input">
        <text v-if="travelDate===''" style="color:#bbb">请选择</text>
        <!-- <text v-else>{{moment(travelDate).format('YYYY年MM月DD日 HH:mm')}}</text> -->
        <text v-else>{{travelDate}}</text>
      </view>
    </picker>
  </view>
</template>

<script>
  import moment from 'moment';
  const dateTimeObj = (() => {
    const dateArr = []
    for (let i = 0; i < 50; i++) { // 默认50天
      const itemDate = moment().add(i, 'day');
      const d = itemDate.day();
      let week = '';
      if (d === 0) {
        week = '日'
      }
      if (d === 1) {
        week = '一'
      }
      if (d === 2) {
        week = '二'
      }
      if (d === 3) {
        week = '三'
      }
      if (d === 4) {
        week = '四'
      }
      if (d === 5) {
        week = '五'
      }
      if (d === 6) {
        week = '六'
      }
      dateArr.push({
        name: `${itemDate.format('MM-DD')}  周${week}`,
        // value: itemDate.format('YYYY-MM-DD')
        value: `${itemDate.format('MM-DD')}  周${week}`
      })
    }
    const timeHHArr = [];
    for (let i = 0; i < 24; i++) {
      let str = i < 10 ? `0${i}:00` : `${i}:00`
      timeHHArr.push({
        name: str,
        value: str
      })
    }
    return {
      dateArr,
      timeHHArr
    }
  })()


  export default {
    components: {},
    data() {
      // const currentDate = this.getDate({
      //   format: true
      // })
      return {
        travelDate: "", //开始时间
        dateTimeIndex: [0, 0, 0], //开始时间默认选择
        moment: moment,
        dateTimeArray: [
          dateTimeObj.dateArr,
          dateTimeObj.timeHHArr,
        ],
      }
    },
    methods: {
      dateTimeChange: function(e) {
        const d = dateTimeObj.dateArr[e.detail.value[0]].value
        const h = dateTimeObj.timeHHArr[e.detail.value[1]].value
        console.log(d, h);
        this.travelDate = `${d}${h}`
        console.log(d, h, this.travelDate);
      },
      // 当前时间
      getDate() {
        const date = new Date();
        let year = date.getFullYear();
        let month = date.getMonth() + 1;
        let day = date.getDate();
        let hour = date.getHours();
        let minute = date.getMinutes();
        month = month > 9 ? month : '0' + month;
        day = day > 9 ? day : '0' + day;
        hour = hour > 9 ? hour : '0' + hour;
        minute = minute > 9 ? minute : '0' + minute;
        return `${year}-${month}-${day} ${hour}:${minute}`;
      },
    }
  }
</script>

<style lang="scss" scoped>
  .items {
    margin-bottom: 18rpx;
  }

  .items-text {
    font-size: 30rpx;
    line-height: 40rpx;
    letter-spacing: 1rpx;
    color: #333333;
    margin-bottom: 19rpx;
  }

  .select-input {
    width: 100%;
    height: 88rpx;
    line-height: 88rpx;
    border-radius: 10rpx;
    border: 1rpx solid #BDBDBD;
    padding-left: 22rpx;
    box-sizing: border-box;
  }

  .time-select {
    display: flex;
    justify-content: space-evenly;
    padding-left: 0;
    font-size: 30rpx;
  }
</style>

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值