ElementPlus DatePicker 日期選擇器

2021-09-08 11:53 更新

DatePicker 日期選擇器

用于選擇或輸入日期

選擇日

以「日」為基本單位,基礎(chǔ)的日期選擇控件


基本單位由type屬性指定。通過shortcuts配置快捷選項(xiàng),禁用日期通過 disabledDate 設(shè)置,傳入函數(shù)

<template>
  <div class="block">
    <span class="demonstration">默認(rèn)</span>
    <el-date-picker v-model="value1" type="date" placeholder="選擇日期">
    </el-date-picker>
  </div>
  <div class="block">
    <span class="demonstration">帶快捷選項(xiàng)</span>
    <el-date-picker
      v-model="value2"
      type="date"
      placeholder="選擇日期"
      :disabled-date="disabledDate"
      :shortcuts="shortcuts"
    >
    </el-date-picker>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        disabledDate(time) {
          return time.getTime() > Date.now()
        },
        shortcuts: [
          {
            text: 'Today',
            value: new Date(),
          },
          {
            text: 'Yesterday',
            value: () => {
              const date = new Date()
              date.setTime(date.getTime() - 3600 * 1000 * 24)
              return date
            },
          },
          {
            text: 'A week ago',
            value: () => {
              const date = new Date()
              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
              return date
            },
          },
        ],
        value1: '',
        value2: '',
      }
    },
  }
</script>

其他日期單位

通過擴(kuò)展基礎(chǔ)的日期選擇,可以選擇周、月、年或多個(gè)日期


<template>
  <div class="container">
  <div class="block">
    <span class="demonstration">周</span>
    <el-date-picker
      v-model="value1"
      type="week"
      format="gggg 第 ww 周"
      placeholder="選擇周"
    >
    </el-date-picker>
  </div>
  <div class="block">
    <span class="demonstration">月</span>
    <el-date-picker v-model="value2" type="month" placeholder="選擇月">
    </el-date-picker>
  </div>
</div>
<div class="container">
  <div class="block">
    <span class="demonstration">年</span>
    <el-date-picker v-model="value3" type="year" placeholder="選擇年">
    </el-date-picker>
  </div>
  <div class="block">
    <span class="demonstration">多個(gè)日期</span>
    <el-date-picker
      type="dates"
      v-model="value4"
      placeholder="選擇一個(gè)或多個(gè)日期"
    >
    </el-date-picker>
  </div>
</div>
</template>

<script>
  export default {
    data() {
      return {
        value1: '',
        value2: '',
        value3: '',
        value4: '',
      }
    },
  }
</script>

選擇日期范圍

可在一個(gè)選擇器中便捷地選擇一個(gè)時(shí)間范圍


在選擇日期范圍時(shí),默認(rèn)情況下左右面板會(huì)聯(lián)動(dòng)。如果希望兩個(gè)面板各自獨(dú)立切換當(dāng)前月份,可以使用unlink-panels屬性解除聯(lián)動(dòng)。

<template>
  <div class="block">
    <span class="demonstration">默認(rèn)</span>
    <el-date-picker
      v-model="value1"
      type="daterange"
      range-separator="至"
      start-placeholder="開始日期"
      end-placeholder="結(jié)束日期"
    >
    </el-date-picker>
  </div>
  <div class="block">
    <span class="demonstration">帶快捷選項(xiàng)</span>
    <el-date-picker
      v-model="value2"
      type="daterange"
      unlink-panels
      range-separator="至"
      start-placeholder="開始日期"
      end-placeholder="結(jié)束日期"
      :shortcuts="shortcuts"
    >
    </el-date-picker>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        shortcuts: [
          {
            text: '最近一周',
            value: () => {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
              return [start, end]
            },
          },
          {
            text: '最近一個(gè)月',
            value: () => {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
              return [start, end]
            },
          },
          {
            text: '最近三個(gè)月',
            value: () => {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
              return [start, end]
            },
          },
        ],
        value1: '',
        value2: '',
      }
    },
  }
</script>

選擇月份范圍

可在一個(gè)選擇器中便捷地選擇一個(gè)月份范圍


在選擇月份范圍時(shí),默認(rèn)情況下左右面板會(huì)聯(lián)動(dòng)。如果希望兩個(gè)面板各自獨(dú)立切換當(dāng)前年份,可以使用unlink-panels屬性解除聯(lián)動(dòng)。

<template>
  <div class="block">
    <span class="demonstration">默認(rèn)</span>
    <el-date-picker
      v-model="value1"
      type="monthrange"
      range-separator="至"
      start-placeholder="開始月份"
      end-placeholder="結(jié)束月份"
    >
    </el-date-picker>
  </div>
  <div class="block">
    <span class="demonstration">帶快捷選項(xiàng)</span>
    <el-date-picker
      v-model="value2"
      type="monthrange"
      unlink-panels
      range-separator="至"
      start-placeholder="開始月份"
      end-placeholder="結(jié)束月份"
      :shortcuts="shortcuts"
    >
    </el-date-picker>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        shortcuts: [
          {
            text: '本月',
            value: [new Date(), new Date()],
          },
          {
            text: '今年至今',
            value: () => {
              const end = new Date()
              const start = new Date(new Date().getFullYear(), 0)
              return [start, end]
            },
          },
          {
            text: '最近六個(gè)月',
            value: () => {
              const end = new Date()
              const start = new Date()
              start.setMonth(start.getMonth() - 6)
              return [start, end]
            },
          },
        ],
        value1: '',
        value2: '',
      }
    },
  }
</script>

默認(rèn)值

如果用戶沒有選擇日期,那默認(rèn)展示當(dāng)前日的月份。你可以使用 default-value 來設(shè)置成其他的日期。

如果類型是 daterange, default-value 則會(huì)設(shè)置左邊窗口的默認(rèn)值。


<template>
  <div class="block">
    <span class="demonstration">date</span>
    <el-date-picker
      v-model="value1"
      type="date"
      placeholder="Pick a date"
      :default-value="new Date(2010, 9, 1)"
    >
    </el-date-picker>
  </div>
  <div class="block">
    <span class="demonstration">daterange</span>
    <el-date-picker
      v-model="value2"
      type="daterange"
      start-placeholder="Start Date"
      end-placeholder="End Date"
      :default-value="[new Date(2010, 9, 1), new Date(2010, 10, 1)]"
    >
    </el-date-picker>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        value1: '',
        value2: '',
      }
    },
  }
</script>

日期格式

使用format指定輸入框的格式。使用value-format指定綁定值的格式。

默認(rèn)情況下,組件接受并返回Date對(duì)象。

在 這里 查看 Day.js 支持的 format 參數(shù)。

請(qǐng)注意大小寫


<template>
  <div class="block">
    <span class="demonstration">默認(rèn)為 Date 對(duì)象</span>
    <div class="demonstration">值:{{ value1 }}</div>
    <el-date-picker
      v-model="value1"
      type="date"
      placeholder="選擇日期"
      format="YYYY 年 MM 月 DD 日"
    >
    </el-date-picker>
  </div>
  <div class="block">
    <span class="demonstration">使用value-format</span>
    <div class="demonstration">值:{{ value2 }}</div>
    <el-date-picker
      v-model="value2"
      type="date"
      placeholder="選擇日期"
      format="YYYY 年 MM 月 DD 日"
      value-format="YYYY/MM/DD"
    >
    </el-date-picker>
  </div>
  <div class="block">
    <span class="demonstration">時(shí)間戳</span>
    <div class="demonstration">值:{{ value3 }}</div>
    <el-date-picker
      v-model="value3"
      type="date"
      placeholder="選擇日期"
      format="YYYY 年 MM 月 DD 日"
      value-format="x"
      >``
    </el-date-picker>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        value1: '',
        value2: '',
        value3: '',
      }
    },
  }
</script>

默認(rèn)顯示日期

在選擇日期范圍時(shí),指定起始日期和結(jié)束日期的默認(rèn)時(shí)刻。

選擇日期范圍時(shí),默認(rèn)情況下,起始日期和結(jié)束日期的時(shí)間部分均為當(dāng)天的 0 點(diǎn) 0 分 0 秒。通過default-time可以分別指定二者的具體時(shí)刻。default-time接受一個(gè)數(shù)組,第一個(gè)值控制起始日期的時(shí)刻,第二個(gè)值控制結(jié)束日期的時(shí)刻。

<template>
  <div class="block">
    <p>組件值:{{ value }}</p>
    <el-date-picker
      v-model="value"
      type="daterange"
      start-placeholder="開始日期"
      end-placeholder="結(jié)束日期"
      :default-time="defaultTime"
    ></el-date-picker>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        value: '',
        defaultTime: [
          new Date(2000, 1, 1, 0, 0, 0),
          new Date(2000, 2, 1, 23, 59, 59),
        ], // '00:00:00', '23:59:59'
      }
    },
  }
</script>

國際化

默認(rèn)語言是英語 (English), 如需使用其他語言, 請(qǐng)參考 國際化

注意:時(shí)間日期相關(guān)的語言配置如 (月份名, 每周第一天是周幾等) 也是在國際化里配置。

Attributes

參數(shù)說明類型可選值默認(rèn)值
model-value / v-model綁定值date(DatePicker) / array(DateRangePicker)
readonly完全只讀booleanfalse
disabled禁用booleanfalse
editable文本框可輸入booleantrue
clearable是否顯示清除按鈕booleantrue
size輸入框尺寸stringlarge/medium/small/minilarge
placeholder非范圍選擇時(shí)的占位內(nèi)容string
start-placeholder范圍選擇時(shí)開始日期的占位內(nèi)容string
end-placeholder范圍選擇時(shí)結(jié)束日期的占位內(nèi)容string
type顯示類型stringyear/month/date/dates/ week/datetime/datetimerange/ daterange/monthrangedate
format顯示在輸入框中的格式string日期格式YYYY-MM-DD
popper-classDatePicker 下拉框的類名string
range-separator選擇范圍時(shí)的分隔符string'-'
default-value可選,選擇器打開時(shí)默認(rèn)顯示的時(shí)間Date可被new Date()解析
default-time范圍選擇時(shí)選中日期所使用的當(dāng)日內(nèi)具體時(shí)刻Date[]數(shù)組,長度為 2,第一項(xiàng)指定開始日期的時(shí)刻,第二項(xiàng)指定結(jié)束日期的時(shí)刻,不指定會(huì)使用時(shí)刻 00:00:00
value-format可選,綁定值的格式。不指定則綁定值為 Date 對(duì)象string日期格式
name原生屬性string
unlink-panels在范圍選擇器里取消兩個(gè)日期面板之間的聯(lián)動(dòng)booleanfalse
prefix-icon自定義頭部圖標(biāo)的類名stringel-icon-date
clear-icon自定義清空?qǐng)D標(biāo)的類名stringel-icon-circle-close
validate-event輸入時(shí)是否觸發(fā)表單的校驗(yàn)boolean-true
shortcuts設(shè)置快捷選項(xiàng),需要傳入數(shù)組對(duì)象object[{ text: string, value: date / function }]
disabledDate設(shè)置禁用狀態(tài),參數(shù)為當(dāng)前日期,要求返回 BooleanFunction

Events

事件名稱說明回調(diào)參數(shù)
change用戶確認(rèn)選定的值時(shí)觸發(fā)組件綁定值
blur當(dāng) input 失去焦點(diǎn)時(shí)觸發(fā)組件實(shí)例
focus當(dāng) input 獲得焦點(diǎn)時(shí)觸發(fā)組件實(shí)例
calendar-change選中日歷日期后會(huì)執(zhí)行的回調(diào),只有當(dāng) daterange 才生效[Date, Date]

Methods

方法名說明參數(shù)
focus使 input 獲取焦點(diǎn)


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)