DatePicker 日期选择器的使用(当日、近一周、近一月...)

template部分

<el-form-item label="操作日期:" style="margin-left: 50px;">
  <el-date-picker
   v-model="dateRange"
   type="datetimerange"
   range-separator="~"
   start-placeholder="开始日期"
   end-placeholder="结束日期"
   :shortcuts="shortcuts"
   :disabled-date="disabledDate"
   style="width: 350px;"
   :default-time="defaultTime"
  />
</el-form-item>

script部分

// 初始化
const dateRange = ref<[Date, Date] | null>(null)

// 禁用当前日期之后的时间
const disabledDate = (time: Date) => {
  return time.getTime() > Date.now()
}

const defaultTime: [Date, Date] = [
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59)
]

const shortcuts = [
  {
    text: '当日',
    value: () => {
      const end = new Date()
      const start = new Date(end)
      start.setHours(0, 0, 0, 0) // 设置为当天的凌晨 00:00:00
      return [start, end]
    }
  },
  {
    text: '近1周',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setDate(start.getDate() - 7)
      return [start, end]
    }
  },
  {
    text: '近1月',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setMonth(start.getMonth() - 1)
      return [start, end]
    }
  },
  {
    text: '近3个月',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setMonth(start.getMonth() - 3)
      return [start, end]
    }
  },
  {
    text: '近6个月',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setMonth(start.getMonth() - 6)
      return [start, end]
    }
  }
]

const quickSetDateRange = (range: string) => {
  const now = new Date()
  let start: Date
  switch (range) {
    case 'day':
      start = new Date(now)
      break
    case 'week':
      start = new Date(now)
      start.setDate(now.getDate() - 7)
      break
    case 'month':
      start = new Date(now)
      start.setMonth(now.getMonth() - 1)
      break
    case '3months':
      start = new Date(now)
      start.setMonth(now.getMonth() - 3)
      break
    case '6months':
      start = new Date(now)
      start.setMonth(now.getMonth() - 6)
      break
    default:
      start = new Date(now)
  }
  dateRange.value = [start, now]
}

// 初始化时过滤数据并设置默认日期范围为近一周
quickSetDateRange('week')
quickDateRange.value = 'week'

UI效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值