015_DatePicker日期选择器

1. DatePicker日期选择器

1.1. 用于选择或输入日期。

1.2. 时间选择器属性

参数

说明

类型

可选值

默认值

value / v-model

绑定值

date(DatePicker) / array(DateRangePicker)

readonly

完全只读

boolean

false

disabled

禁用

boolean

false

editable

文本框可输入

boolean

true

clearable

是否显示清除按钮

boolean

true

size

输入框尺寸

string

large / small / mini

placeholder

非范围选择时的占位内容

string

start-placeholder

范围选择时开始日期的占位内容

string

end-placeholder

范围选择时开始日期的占位内容

string

type

显示类型

string

year/month/date/dates/ week/datetime/datetimerange/ daterange/monthrange

date

format

显示在输入框中的格式

string

见日期格式

yyyy-MM-dd

align

对齐方式

string

left / center / right

left

popper-class

DatePicker下拉框的类名

string

picker-options

当前时间日期选择器特有的选项参考下表

object

{}

range-separator

选择范围时的分隔符

string

'-'

default-value

可选, 选择器打开时默认显示的时间

Date

可被new Date()解析

default-time

范围选择时选中日期所使用的当日内具体时刻

string[]

数组, 长度为2, 每项值为字符串, 形如: 12:00:00, 第一项指定开始日期的时刻, 第二项指定结束日期的时刻, 不指定会使用时刻00:00:00

value-format

可选, 绑定值的格式。不指定则绑定值为Date对象

string

见日期格式

name

原生属性

string

unlink-panels

在范围选择器里取消两个日期面板之间的联动

boolean

false

prefix-icon

自定义头部图标的类名

string

el-icon-date

clear-icon

自定义清空图标的类名

string

el-icon-circle-close

validate-event

输入时是否触发表单的校验

boolean

true

1.3. Picker Options

参数

说明

类型

可选值

默认值

shortcuts

设置快捷选项, 需要传入{ text, onClick }对象用法参考demo或下表

Object[]

disabledDate

设置禁用状态, 参数为当前日期, 要求返回Boolean

Function

cellClassName

设置日期的className

Function(Date)

firstDayOfWeek

周起始日

Number

1到7

7

onPick

选中日期后会执行的回调, 只有当daterange或datetimerange才生效

Function({ maxDate, minDate })

1.4. Shortcuts

参数

说明

类型

text

标题文本

string

onClick

选中后的回调函数, 参数是vm, 可通过触发'pick'事件设置选择器的值。例如: vm.$emit('pick', new Date())

function

1.5. 事件

事件名称

说明

回调参数

change

用户确认选定的值时触发

组件绑定值。格式与绑定值一致, 可受value-format控制

blur

当input失去焦点时触发

组件实例

focus

当input获得焦点时触发

组件实例

1.6. 方法

事件名称

说明

focus

使input获得焦点

2. 日期格式

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

2.2. 默认情况下, 组件接受并返回Date对象。以下为可用的格式化字串:

格式

含义

备注

举例

yyyy

2017

M

不补0

1

MM

01

W

仅周选择器的format可用; 不补0  

1

WW

仅周选择器的format可用

01

d

不补0

2

dd

02

H

小时

24小时制; 不补0

3

HH

小时

24小时制

03

h

小时

12小时制, 须和A或a使用; 不补0

3

hh

小时

12小时制, 须和A或a使用

03

m

分钟

不补0

4

mm

分钟

04

s

不补0

5

ss

05

A

AM/PM

仅format可用, 大写

AM

a

am/pm

仅format可用, 小写

am

timestamp

JS时间戳

仅value-format可用; 组件绑定值为number类型

1483326245000

[MM]

不需要格式化字符

使用方括号标识不需要格式化的字符(如 [A] [MM])

MM

3. 日期选择器例子

3.1. 使用脚手架新建一个名为element-ui-datepicker的前端项目, 同时安装Element插件。

3.2. 编写index.js 

import Vue from 'vue'
import VueRouter from 'vue-router'
import DatePicker from '../components/DatePicker.vue'
import RangeDatePicker from '../components/RangeDatePicker.vue'
import FormatDatePicker from '../components/FormatDatePicker.vue'

Vue.use(VueRouter)

const routes = [
  { path: '/', redirect: '/DatePicker' },
  { path: '/DatePicker', component: DatePicker },
  { path: '/RangeDatePicker', component: RangeDatePicker },
  { path: '/FormatDatePicker', component: FormatDatePicker }
]

const router = new VueRouter({
  routes
})

export default router

3.3. 在components下创建DatePicker.vue

<template>
  <div>
    <h1>选择日-以[日]为基本单位, 基础的日期选择控件</h1>
    <h4>基本单位由type属性指定。快捷选项需配置picker-options对象中的shortcuts, 禁用日期通过disabledDate设置, 传入函数。</h4>
    <el-row>
      <el-col :span="5">
        <span>默认: </span>
        <el-date-picker v-model="val11" type="date" placeholder="选择日期"></el-date-picker>
      </el-col>
      <el-col :span="5">
        <span>带快捷选项: </span>
        <el-date-picker v-model="val12" align="right" type="date" placeholder="选择日期" :picker-options="po1"></el-date-picker>
      </el-col>
    </el-row>

    <h1>其他日期单位</h1>
    <h4>通过扩展基础的日期选择, 可以选择周、月、年或多个日期。</h4>
    <el-row>
      <el-col :span="5">
        <span>周: </span>
        <el-date-picker v-model="val21" type="week" format="yyyy 第 WW 周" placeholder="选择周"></el-date-picker>
      </el-col>
      <el-col :span="5">
        <span>月: </span>
        <el-date-picker v-model="val22" type="month" placeholder="选择月"></el-date-picker>
      </el-col>
      <el-col :span="5">
        <span>年: </span>
        <el-date-picker v-model="val23" type="year" placeholder="选择年"></el-date-picker>
      </el-col>
      <el-col :span="5">
        <span>多个日期: </span>
        <el-date-picker type="dates" v-model="val24" placeholder="选择一个或多个日期"></el-date-picker>
      </el-col>
    </el-row>
  </div>
</template>

<script>
export default {
  data () {
    return {
      val11: '',
      val12: '',
      po1: {
        disabledDate (time) {
          return time.getTime() > Date.now()
        },
        shortcuts: [{
          text: '今天',
          onClick (picker) {
            picker.$emit('pick', new Date())
          }
        }, {
          text: '昨天',
          onClick (picker) {
            const date = new Date()
            date.setTime(date.getTime() - 3600 * 1000 * 24)
            picker.$emit('pick', date)
          }
        }, {
          text: '一周前',
          onClick (picker) {
            const date = new Date()
            date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
            picker.$emit('pick', date)
          }
        }]
      },
      val21: '',
      val22: '',
      val23: '',
      val24: ''
    }
  }
}
</script>

3.4. 在components下创建RangeDatePicker.vue

<template>
  <div>
    <h1>选择日期范围-可在一个选择器中便捷地选择一个时间范围</h1>
    <h4>在选择日期范围时, 默认情况下左右面板会联动。如果希望两个面板各自独立切换当前月份, 可以使用unlink-panels属性解除联动。</h4>
    <el-row>
      <el-col :span="5">
        <span>默认: </span>
        <el-date-picker v-model="val31" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
      </el-col>
      <el-col :span="5">
        <span>带快捷选项: </span>
        <el-date-picker v-model="val32" type="daterange" align="right" unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="po3"></el-date-picker>
      </el-col>
    </el-row>

    <h1>选择月份范围-可在一个选择器中便捷地选择一个月份范围</h1>
    <h4>在选择月份范围时, 默认情况下左右面板会联动。如果希望两个面板各自独立切换当前年份, 可以使用unlink-panels属性解除联动。</h4>
    <el-row>
      <el-col :span="5">
        <span>默认: </span>
        <el-date-picker v-model="val41" type="monthrange" range-separator="至" start-placeholder="开始月份" end-placeholder="结束月份"></el-date-picker>
      </el-col>
      <el-col :span="5">
        <span>带快捷选项: </span>
        <el-date-picker v-model="val42" type="monthrange" align="right" unlink-panels range-separator="至" start-placeholder="开始月份" end-placeholder="结束月份" :picker-options="po4"></el-date-picker>
      </el-col>
    </el-row>
  </div>
</template>

<script>
export default {
  data () {
    return {
      val31: '',
      val32: '',
      po3: {
        shortcuts: [{
          text: '最近一周',
          onClick (picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
            picker.$emit('pick', [start, end])
          }
        }, {
          text: '最近一个月',
          onClick (picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
            picker.$emit('pick', [start, end])
          }
        }, {
          text: '最近三个月',
          onClick (picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
            picker.$emit('pick', [start, end])
          }
        }]
      },
      val41: '',
      val42: '',
      po4: {
        shortcuts: [{
          text: '本月',
          onClick (picker) {
            picker.$emit('pick', [new Date(), new Date()])
          }
        }, {
          text: '今年至今',
          onClick (picker) {
            const end = new Date()
            const start = new Date(new Date().getFullYear(), 0)
            picker.$emit('pick', [start, end])
          }
        }, {
          text: '最近六个月',
          onClick (picker) {
            const end = new Date()
            const start = new Date()
            start.setMonth(start.getMonth() - 6)
            picker.$emit('pick', [start, end])
          }
        }]
      }
    }
  }
}
</script>

3.5. 在components下创建FormatDatePicker.vue

<template>
  <div>
    <h1>日期格式</h1>
    <h4>使用format指定输入框的格式; 使用value-format指定绑定值的格式。默认情况下, 组件接受并返回Date对象。</h4>
    <el-row>
      <el-col :span="8">
        <p>默认为Date对象, 值:{{ val51 }}</p>
        <el-date-picker v-model="val51" type="date" placeholder="选择日期" format="yyyy 年 MM 月 dd 日"></el-date-picker>
      </el-col>
      <el-col :span="8">
        <p>使用value-format, 值:{{ val52 }}</p>
        <el-date-picker v-model="val52" type="date" placeholder="选择日期" format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd"></el-date-picker>
      </el-col>
      <el-col :span="8">
        <p>时间戳, 值:{{ val53 }}</p>
        <el-date-picker v-model="val53" type="date" placeholder="选择日期" format="yyyy 年 MM 月 dd 日" value-format="timestamp"></el-date-picker>
      </el-col>
    </el-row>

    <h1>默认显示日期-在选择日期范围时, 指定起始日期和结束日期的默认时刻</h1>
    <h4>选择日期范围时, 默认情况下, 起始日期和结束日期的时间部分均为当天的0点0分0秒。通过default-time可以分别指定二者的具体时刻。default-time接受一个数组, 其中的值为形如12:00:00的字符串, 第一个值控制起始日期的时刻, 第二个值控制结束日期的时刻。</h4>
    <p>组件值: {{ val61 }}</p>
    <el-date-picker v-model="val61" type="daterange" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']"></el-date-picker>
  </div>
</template>

<script>
export default {
  data () {
    return {
      val51: '',
      val52: '',
      val53: '',
      val61: ''
    }
  }
}
</script>

3.6. 运行项目, 访问http://localhost:8080/#/DatePicker

3.7. 运行项目, 访问http://localhost:8080/#/RangeDatePicker

3.8. 运行项目, 访问http://localhost:8080/#/FormatDatePicker

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值