DateTimePicker 日期时间选择器

在同一个选择器里选择日期和时间

TIP

日期时间选择器来自日期选择器和时间选择器的组合。 关于属性的更详细解释,请参阅日期选择器和时间选择器。

日期和时间点

设置 typedatetimerange 即可选择日期和时间范围。 快捷方式的使用方法与 Date Picker 相同。

DateTime Picker 日期时间选择器 - 图1

  1. <template>
  2. <div class="demo-datetime-picker">
  3. <div class="block">
  4. <span class="demonstration">Default</span>
  5. <el-date-picker
  6. v-model="value1"
  7. type="datetime"
  8. placeholder="Select date and time"
  9. />
  10. </div>
  11. <div class="block">
  12. <span class="demonstration">With shortcuts</span>
  13. <el-date-picker
  14. v-model="value2"
  15. type="datetime"
  16. placeholder="Select date and time"
  17. :shortcuts="shortcuts"
  18. />
  19. </div>
  20. <div class="block">
  21. <span class="demonstration">With default time</span>
  22. <el-date-picker
  23. v-model="value3"
  24. type="datetime"
  25. placeholder="Select date and time"
  26. :default-time="defaultTime"
  27. />
  28. </div>
  29. </div>
  30. </template>
  31. <script lang="ts" setup>
  32. import { ref } from 'vue'
  33. const value1 = ref('')
  34. const value2 = ref('')
  35. const value3 = ref('')
  36. const defaultTime = new Date(2000, 1, 1, 12, 0, 0)
  37. const shortcuts = [
  38. {
  39. text: 'Today',
  40. value: new Date(),
  41. },
  42. {
  43. text: 'Yesterday',
  44. value: () => {
  45. const date = new Date()
  46. date.setTime(date.getTime() - 3600 * 1000 * 24)
  47. return date
  48. },
  49. },
  50. {
  51. text: 'A week ago',
  52. value: () => {
  53. const date = new Date()
  54. date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
  55. return date
  56. },
  57. },
  58. ]
  59. </script>
  60. <style scoped>
  61. .demo-datetime-picker {
  62. display: flex;
  63. width: 100%;
  64. padding: 0;
  65. flex-wrap: wrap;
  66. }
  67. .demo-datetime-picker .block {
  68. padding: 30px 0;
  69. text-align: center;
  70. border-right: solid 1px var(--el-border-color);
  71. flex: 1;
  72. }
  73. .demo-datetime-picker .block:last-child {
  74. border-right: none;
  75. }
  76. .demo-datetime-picker .demonstration {
  77. display: block;
  78. color: var(--el-text-color-secondary);
  79. font-size: 14px;
  80. margin-bottom: 20px;
  81. }
  82. </style>

日期时间格式

使用format指定输入框的格式。 使用value-format指定绑定值的格式。

默认情况下,组件接受并返回Date对象。

这里 DateTime Picker 日期时间选择器 - 图2 查看 Day.js 支持的 format 参数。

WARNING

请一定要注意传入参数的大小写是否正确

DateTime Picker 日期时间选择器 - 图3

  1. <template>
  2. <div class="demo-datetime-picker">
  3. <div class="block">
  4. <span class="demonstration">Emits Date object</span>
  5. <div class="demonstration">Value: {{ value1 }}</div>
  6. <el-date-picker
  7. v-model="value1"
  8. type="datetime"
  9. placeholder="Pick a Date"
  10. format="YYYY/MM/DD HH:mm:ss"
  11. />
  12. </div>
  13. <div class="block">
  14. <span class="demonstration">Use value-format</span>
  15. <div class="demonstration">Value:{{ value2 }}</div>
  16. <el-date-picker
  17. v-model="value2"
  18. type="datetime"
  19. placeholder="Pick a Date"
  20. format="YYYY/MM/DD hh:mm:ss"
  21. value-format="YYYY-MM-DD h:m:s a"
  22. />
  23. </div>
  24. <div class="block">
  25. <span class="demonstration">Timestamp</span>
  26. <div class="demonstration">Value:{{ value3 }}</div>
  27. <el-date-picker
  28. v-model="value3"
  29. type="datetime"
  30. placeholder="Pick a Date"
  31. format="YYYY/MM/DD hh:mm:ss"
  32. value-format="x"
  33. />
  34. </div>
  35. </div>
  36. </template>
  37. <script lang="ts" setup>
  38. import { ref } from 'vue'
  39. const value1 = ref('')
  40. const value2 = ref('')
  41. const value3 = ref('')
  42. </script>
  43. <style scoped>
  44. .demo-datetime-picker {
  45. display: flex;
  46. width: 100%;
  47. padding: 0;
  48. flex-wrap: wrap;
  49. }
  50. .demo-datetime-picker .block {
  51. padding: 30px 0;
  52. text-align: center;
  53. border-right: solid 1px var(--el-border-color);
  54. flex: 1;
  55. }
  56. .demo-datetime-picker .block:last-child {
  57. border-right: none;
  58. }
  59. .demo-datetime-picker .demonstration {
  60. display: block;
  61. color: var(--el-text-color-secondary);
  62. font-size: 14px;
  63. margin-bottom: 20px;
  64. }
  65. </style>

日期和时间范围

设置typedatetimerange即可选择日期和时间范围

DateTime Picker 日期时间选择器 - 图4

  1. <template>
  2. <div class="block">
  3. <span class="demonstration">Default</span>
  4. <el-date-picker
  5. v-model="value1"
  6. type="datetimerange"
  7. range-separator="To"
  8. start-placeholder="Start date"
  9. end-placeholder="End date"
  10. />
  11. </div>
  12. <div class="block">
  13. <span class="demonstration">With shortcuts</span>
  14. <el-date-picker
  15. v-model="value2"
  16. type="datetimerange"
  17. :shortcuts="shortcuts"
  18. range-separator="To"
  19. start-placeholder="Start date"
  20. end-placeholder="End date"
  21. />
  22. </div>
  23. </template>
  24. <script lang="ts" setup>
  25. import { ref } from 'vue'
  26. const value1 = ref([
  27. new Date(2000, 10, 10, 10, 10),
  28. new Date(2000, 10, 11, 10, 10),
  29. ])
  30. const value2 = ref('')
  31. const shortcuts = [
  32. {
  33. text: 'Last week',
  34. value: () => {
  35. const end = new Date()
  36. const start = new Date()
  37. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
  38. return [start, end]
  39. },
  40. },
  41. {
  42. text: 'Last month',
  43. value: () => {
  44. const end = new Date()
  45. const start = new Date()
  46. start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
  47. return [start, end]
  48. },
  49. },
  50. {
  51. text: 'Last 3 months',
  52. value: () => {
  53. const end = new Date()
  54. const start = new Date()
  55. start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
  56. return [start, end]
  57. },
  58. },
  59. ]
  60. </script>
  61. <style scoped>
  62. .block {
  63. padding: 30px 0;
  64. text-align: center;
  65. border-right: solid 1px var(--el-border-color);
  66. flex: 1;
  67. }
  68. .block:last-child {
  69. border-right: none;
  70. }
  71. .block .demonstration {
  72. display: block;
  73. color: var(--el-text-color-secondary);
  74. font-size: 14px;
  75. margin-bottom: 20px;
  76. }
  77. </style>

默认的起始与结束时刻

使用datetimerange进行范围选择时,在日期选择面板中选定起始与结束的日期,默认会使用该日期的00:00:00作为起始与结束的时刻;通过选项default-time可以控制选中起始与结束日期时所使用的具体时刻。 我们可以使用 default-time 属性来控制它。 default-time接受一个数组,其中第一项控制起始日期的具体时刻,第二项控制结束日期的具体时刻。 第一项控制开始日期的时间值,第二项控制结束日期的时间值。

DateTime Picker 日期时间选择器 - 图5

  1. <template>
  2. <div class="block">
  3. <span class="demonstration">Start date time 12:00:00</span>
  4. <el-date-picker
  5. v-model="value1"
  6. type="datetimerange"
  7. start-placeholder="Start Date"
  8. end-placeholder="End Date"
  9. :default-time="defaultTime1"
  10. />
  11. </div>
  12. <div class="block">
  13. <span class="demonstration"
  14. >Start date time 12:00:00, end date time 08:00:00</span
  15. >
  16. <el-date-picker
  17. v-model="value2"
  18. type="datetimerange"
  19. start-placeholder="Start Date"
  20. end-placeholder="End Date"
  21. :default-time="defaultTime2"
  22. />
  23. </div>
  24. </template>
  25. <script lang="ts" setup>
  26. import { ref } from 'vue'
  27. const value1 = ref('')
  28. const value2 = ref('')
  29. const defaultTime1 = [new Date(2000, 1, 1, 12, 0, 0)] // '12:00:00'
  30. const defaultTime2 = [
  31. new Date(2000, 1, 1, 12, 0, 0),
  32. new Date(2000, 2, 1, 8, 0, 0),
  33. ] // '12:00:00', '08:00:00'
  34. </script>
  35. <style scoped>
  36. .block {
  37. padding: 30px 0;
  38. text-align: center;
  39. border-right: solid 1px var(--el-border-color);
  40. flex: 1;
  41. }
  42. .block:last-child {
  43. border-right: none;
  44. }
  45. .block .demonstration {
  46. display: block;
  47. color: var(--el-text-color-secondary);
  48. font-size: 14px;
  49. margin-bottom: 20px;
  50. }
  51. </style>

属性

属性说明类型可选值默认值
model-value / v-model选中项绑定值date(DateTimePicker) / array(DateTimeRangePicker)
readonly只读booleanfalse
disabled禁用booleanfalse
editable文本框可输入booleantrue
clearable是否显示清除按钮booleantrue
size输入框尺寸stringlarge/default/smalldefault
placeholder非范围选择时的占位内容string
start-placeholder范围选择时开始日期的占位内容string
end-placeholder范围选择时结束日期的占位内容string
time-arrow-controlwhether to pick time using arrow buttonsbooleanfalse
type显示类型stringyear/month/date/datetime/ week/datetimerange/daterangedate
format显示在输入框中的格式stringsee date formatsYYYY-MM-DD HH:mm:ss
popper-classDateTimePicker 下拉框的类名string
range-separator选择范围时的分隔符string-‘-‘
default-value可选,选择器打开时默认显示的时间Date可被new Date()解析的所有值
default-time选中日期后的默认具体时刻若为非时间范围: Date / 若为时间范围: Date[]非范围选择时:Date 对象;范围选择时:数组,长度为 2,每项值为 Date 对象,第一项指定开始日期的时刻,第二项指定结束日期的时刻。 不指定会使用时刻 00:00:00
value-format可选,绑定值的格式。 不指定则绑定值为 Date 对象string查看 日期格式 DateTime Picker 日期时间选择器 - 图6
id等价于原生 input id 属性string / array(string)字符串 id=”my-date” 对应单个日期或数组 :id=”[‘my-range-start’, ‘my-range-end’]” 对应日期范围-
name等价于原生 input name 属性string
unlink-panels在范围选择器里取消两个日期面板之间的联动booleanfalse
prefix-icon自定义前缀图标string | ComponentDate
clear-icon自定义清除图标string | ComponentCircleClose
shortcuts设置快捷选项,需要传入数组对象object[{ text: string, value: date / function }]
disabled-date一个用来判断该日期是否被禁用的函数,接受一个 Date 对象作为参数。 应该返回一个 Boolean 值。Function(Date)
cell-class-name设置自定义类名Function(Date)
teleported是否将 datetime-picker 的下拉列表插入至 body 元素booleantrue / falsetrue

事件

事件名说明回调参数
change用户确认选定的值时触发value
blur在组件 Input 失去焦点时触发(e: FocusEvent)
focus在组件 Input 获得焦点时触发(e: FocusEvent)
calendar-change如果用户没有选择日期,那默认展示当前日的月份。 选中日历日期后会执行的回调,只有当 datetimerange 才生效[Date, Date]
visible-change当 DateTimePicker 的下拉列表出现/消失时触发出现时为true,隐藏时为false

方法

方法名说明参数
focus使 input 获取焦点

插槽

插槽名说明
default自定义单元格内容
range-separator自定义范围分割符内容

源代码

文档 DateTime Picker 日期时间选择器 - 图7