Form-datepicker日期选择器

╰半夏微凉° 2022-03-29 10:06 983阅读 0赞

DatePicker 日期选择器:用于选择或输入日期

1、基本单位由type属性指定。type=date时

type:显示类型,默认date,year/month/date/dates(可以选择多个日期)/ week/datetime/datetimerange/daterange

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hyYnNmZHh6aHEwMQ_size_16_color_FFFFFF_t_7020190223140620801.png

  1. <el-date-picker
  2. v-model="value1"
  3. type="date"
  4. placeholder="选择日期">
  5. </el-date-picker>
  6. <script>
  7. new Vue({
  8. el: '#app',
  9. data() {
  10. return {
  11. value1: '',
  12. };
  13. }
  14. })
  15. </script>

1.1Picker Options对象

shortcuts:设置快捷选项,需要传入 { text, onClick } 对象;

disabledDate:设置禁用日期,传入函数 ,参数为当前日期,要求返回 Boolean,返回为true的日期即禁用

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hyYnNmZHh6aHEwMQ_size_16_color_FFFFFF_t_70 1

  1. <el-date-picker
  2. v-model="value2"
  3. type="date"
  4. placeholder="选择日期"
  5. :picker-options="pickerOptions1">
  6. </el-date-picker>
  7. <script>
  8. new Vue({
  9. el: '#app',
  10. data() {
  11. return {
  12. pickerOptions1: {
  13. disabledDate(time) {
  14. return time.getTime() > Date.now();
  15. },
  16. shortcuts: [{
  17. text: '今天',
  18. onClick(picker) {
  19. picker.$emit('pick', new Date());
  20. }
  21. }, {
  22. text: '昨天',
  23. onClick(picker) {
  24. const date = new Date();
  25. date.setTime(date.getTime() - 3600 * 1000 * 24);
  26. picker.$emit('pick', date);
  27. }
  28. }, {
  29. text: '一周前',
  30. onClick(picker) {
  31. const date = new Date();
  32. date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
  33. picker.$emit('pick', date);
  34. }
  35. }]
  36. },
  37. value2: '',
  38. };
  39. }
  40. })
  41. </script>

2.1 选择日期范围,type=daterange

可在一个选择器中便捷地选择一个时间范围;在选择日期范围时,默认情况下左右面板会联动。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hyYnNmZHh6aHEwMQ_size_16_color_FFFFFF_t_70 2

v-model绑定的默认时间格式要类似如下数组

20190222202932137.png

  1. <div class="block">
  2. <span class="demonstration">默认</span>
  3. <el-date-picker
  4. v-model="value6"
  5. type="daterange"
  6. range-separator="至"
  7. start-placeholder="开始日期"
  8. end-placeholder="结束日期">
  9. </el-date-picker>
  10. </div>
  11. <script>
  12. new Vue({
  13. el: '#app',
  14. data() {
  15. return {
  16. value6: ''
  17. };
  18. }
  19. })
  20. </script>

2.2 Picker Options选项

情景:最多查询31天的日期数据

change事件:用户确认选定的值时触发,组件绑定值。格式与绑定值一致,可受 value-format 控制。

onPick:选中日期后会执行的回调,只有当 daterangedatetimerange 才生效。

  1. 参数1maxDate为后选的日期,一般为选中的较大日期,参数2minDate为先选的日期,一般为选中的较小日期,都是0 时刻。形如:

20190223144057738.png

disabledDate:参数为当前日期,且是0点时刻

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hyYnNmZHh6aHEwMQ_size_16_color_FFFFFF_t_70 3

  1. <el-date-picker
  2. v-model="time_interval"
  3. type="daterange"
  4. value-format="yyyy-MM-dd"
  5. range-separator="至"
  6. start-placeholder="开始日期"
  7. end-placeholder="结束日期"
  8. :picker-options="pickerOptions2"
  9. @change="getList()">
  10. </el-date-picker>
  11. <script>
  12. new Vue({
  13. el: '#app',
  14. data() {
  15. return {
  16. time_interval: [],
  17. //选中的第一个时间,0点时刻的时间戳格式
  18. choiceDate: '',
  19. pickerOptions2: {
  20. shortcuts: [{
  21. text: '最近3天',
  22. onClick(picker) {
  23. const end = new Date()
  24. const start = new Date()
  25. start.setTime(start.getTime() - 3600 * 1000 * 24 * 2)
  26. picker.$emit('pick', [start, end])
  27. }
  28. }, {
  29. text: '最近7天',
  30. onClick(picker) {
  31. const end = new Date()
  32. const start = new Date()
  33. start.setTime(start.getTime() - 3600 * 1000 * 24 * 6)
  34. picker.$emit('pick', [start, end])
  35. }
  36. }, {
  37. text: '最近30天',
  38. onClick(picker) {
  39. const end = new Date()
  40. const start = new Date()
  41. start.setTime(start.getTime() - 3600 * 1000 * 24 * 29)
  42. picker.$emit('pick', [start, end])
  43. }
  44. }],
  45. onPick: ({ maxDate, minDate }) => {
  46. this.choiceDate = minDate.getTime()
  47. if (maxDate) {
  48. this.choiceDate = ''
  49. }
  50. },
  51. //最多只能查连续31天的数据,减30获取min值或加30获取max值都包含31天
  52. //这里的时间参数,以0点时刻的日期为单位
  53. disabledDate: time => {
  54. if (this.choiceDate) {
  55. const one = 30 * 24 * 3600 * 1000
  56. const minTime = this.choiceDate - one
  57. const maxTime =
  58. this.choiceDate + one > Date.now()
  59. ? Date.now()
  60. : this.choiceDate + one
  61. return time.getTime() < minTime || time.getTime() > maxTime
  62. } else {
  63. //没有选中第一个日期时
  64. return time.getTime() > Date.now()
  65. }
  66. }
  67. }
  68. };
  69. },
  70. methods: {
  71. getList(){
  72. alert('查询的时间参数发生改变,重新请求接口')
  73. }
  74. }
  75. })
  76. </script>

3. 日期格式与绑定值格式
format:指定输入框显示的格式;默认yyyy-MM-dd,可进行官网参考

value-format:指定绑定值的格式。默认情况下,组件接受并返回Date对象。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hyYnNmZHh6aHEwMQ_size_16_color_FFFFFF_t_70 4

  1. <div class="block">
  2. <span class="demonstration">默认为 Date 对象</span>
  3. <div class="demonstration">值:{
  4. { value10 }}</div>
  5. <el-date-picker
  6. v-model="value10"
  7. type="date"
  8. placeholder="选择日期"
  9. format="yyyy 年 MM 月 dd 日">
  10. </el-date-picker>
  11. </div>
  12. <div class="block">
  13. <span class="demonstration">使用 value-format</span>
  14. <div class="demonstration">值:{
  15. { value11 }}</div>
  16. <el-date-picker
  17. v-model="value11"
  18. type="date"
  19. placeholder="选择日期"
  20. format="yyyy 年 MM 月 dd 日"
  21. value-format="yyyy-MM-dd">
  22. </el-date-picker>
  23. </div>
  24. <div class="block">
  25. <span class="demonstration">时间戳</span>
  26. <div class="demonstration">值:{
  27. { value12 }}</div>
  28. <el-date-picker
  29. v-model="value12"
  30. type="date"
  31. placeholder="选择日期"
  32. format="yyyy 年 MM 月 dd 日"
  33. value-format="timestamp">
  34. </el-date-picker>
  35. </div>

Attributes















































































































参数 说明 类型 可选值 默认值
value / v-model 绑定值 date(DatePicker) / array(DateRangePicker)
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 date
format 显示在输入框中的格式 string 日期格式 yyyy-MM-dd
align 对齐方式 string left, center, right left
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 日期格式

Picker Options


































参数 说明 类型 可选值 默认值
shortcuts 设置快捷选项,需要传入 { text, onClick } 对象用法参考 demo 或下表 Object[]
disabledDate 设置禁用状态,参数为当前日期,要求返回 Boolean Function
onPick 选中日期后会执行的回调,只有当 daterange 或 datetimerange 才生效 Function({ maxDate, minDate })

Shortcuts



























参数 说明 类型 可选值 默认值
text 标题文本 string
onClick 选中后的回调函数,参数是 vm,可通过触发 ‘pick’ 事件设置选择器的值。例如 vm.$emit(‘pick’, new Date()) function

Events
















事件名称 说明 回调参数
change 用户确认选定的值时触发 组件绑定值。格式与绑定值一致,可受 value-format 控制

发表评论

表情:
评论列表 (有 0 条评论,983人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MUI实现日期选择

    前言 一般来讲,日期选择器会出现在预约类的APP中,比如酒店预约、旅游预约、图书预约等等,而实现的方式也有许多种,笔者最近在学习MUI了,觉得该小技巧挺不错的,所以做...

    相关 vant日期选择使用

    vant日期选择器使用 最近遇到个需求就是日期选择只要月,日,时,分,居然不要年份,我懵了,我不会呀,咋办,经过几近波折,也问了好多同,还是得做呀,终于功夫不负有心人(呜