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

Nuxtjs/Vuejs中如何为datetime-local输入框设置当前时间为默认值

问题核心原因

datetime-local 类型的输入框要求绑定值必须是 YYYY-MM-DDTHH:mm 格式的字符串,你当前直接绑定 Date 对象,Vue 不会做隐式格式转换,所以无法被输入框识别。AngularJS 对该类型输入做了自动转换兼容,所以相同逻辑在 AngularJS 中可以生效。

修复方案

1. 时区兼容处理(可选,推荐)

如果需要显示本地时区的当前时间,避免UTC时区差问题,可以先写一个格式化方法:

function formatDatetimeLocal(date) {
  const year = date.getFullYear()
  const month = String(date.getMonth() + 1).padStart(2, '0')
  const day = String(date.getDate()).padStart(2, '0')
  const hours = String(date.getHours()).padStart(2, '0')
  const minutes = String(date.getMinutes()).padStart(2, '0')
  return `${year}-${month}-${day}T${hours}:${minutes}`
}

2. 修改JS代码

export default {
 data(){
  return {
   formData:{
    // 初始化直接转换为符合要求的字符串格式
    eventtimeSpecific: formatDatetimeLocal(new Date()),
   }
  }
 },
  mounted () {
    const today = new Date()
    today.setHours(today.getHours(), today.getMinutes(), 0, 0)
    // 修改值时同样需要转成指定格式字符串
    this.formData.eventtimeSpecific = formatDatetimeLocal(today)
  },
}

如果你不需要处理时区差异,也可以直接用简化写法替换格式化方法:

eventtimeSpecific: new Date().toISOString().slice(0, 16)

3. HTML代码无需修改

保持原有代码即可:

<input v-model="formData.eventtimeSpecific" type="datetime-local" class="form-control" title="Set Specific Event Time">

补充说明

如果需要支持秒级精度,可以将格式化逻辑调整为输出到秒的 YYYY-MM-DDTHH:mm:ss 格式,同时给输入框添加 step="1" 属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:00:01