You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Vuetify日期选择器中的data-v-date格式?

解决Vuetify日期选择器DayjsAdapter返回ISO字符串问题

直接给两种可行解决方案:

方式一:自定义DayjsAdapter重写格式逻辑

问题根源是DayjsAdapter默认会把日期序列化为带时间的ISO字符串,你需要扩展适配器,强制在日期选择场景返回YYYY-MM-DD格式:

import { DayjsAdapter } from '@vuetify/date-adapter-dayjs'
import dayjs from 'dayjs'

export default class CustomDayjsAdapter extends DayjsAdapter {
  // 重写format方法,针对日期选择器的输出格式做处理
  format(date, format) {
    // Vuetify日期选择器内部调用format时,会传入特定标识,这里直接强制返回日期格式
    if (format === 'date' || !format) {
      return dayjs(date).format('YYYY-MM-DD')
    }
    // 其他场景保留原适配器的格式化逻辑
    return super.format(date, format)
  }

  // 同时处理解析逻辑,确保ISO字符串能被正确转为日期对象
  parse(value, format) {
    if (typeof value === 'string' && value.includes('T')) {
      // 解析ISO字符串时取当天起始时间,避免时间部分干扰
      return dayjs(value).startOf('day')
    }
    return super.parse(value, format)
  }
}

然后在Vuetify初始化时注册这个自定义适配器:

import { createVuetify } from 'vuetify'
import CustomDayjsAdapter from './path/to/CustomDayjsAdapter'

const vuetify = createVuetify({
  date: {
    adapter: CustomDayjsAdapter,
  },
})

方式二:组件层级直接指定格式

如果不想全局修改适配器,也可以在单个日期选择器组件上通过format属性强制指定输出格式:

<v-date-picker 
  v-model="selectedDate" 
  format="YYYY-MM-DD"
  return-object="false"
/>

注意要加上return-object="false",确保返回的是字符串格式而非Dayjs对象。

为什么你之前的扩展没生效?

大概率是重写format方法时,没有匹配到Vuetify内部调用该方法时传入的格式参数。默认情况下,DayjsAdapter处理日期选择器v-model时,调用的format参数可能不是你预期的,所以需要通过判断场景强制返回目标格式,同时配套处理parse逻辑,保证双向绑定的一致性。

内容的提问来源于stack exchange,提问作者Tomasz Malocha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:03:20