elementui 时间选择器 8小时时差

      <el-date-picker
              v-model="rulesForm.FlightTime"
              type="datetime"
              placeholder="选择日期时间"
              value-format="yyyy-MM-dd HH:mm:ss"
            ></el-date-picker>
            
      data(){
        return {
          rulesForm:{
              FlightTime:new Date()
          }
        }
      }   

日期选择器设置了 value-format="yyyy-MM-dd HH:mm:ss",默认值是当前时间new Date()
默认值不走value-format的格式化,只有选了值以后才走value-format。这会导致向后台传值的时候默认值传的是UTC时间,选中后传的是北京时间。
第一次进入页面打印的默认值
图片描述

选中一次时间后打印的值
图片描述

阅读 9.1k
3 个回答

你用default-value绑定默认值试试看

你设置default-value的格式和你的value-format一致,value-format是设置后的值,default-value是默认显示的值,同时将format也设置上

自己封装一个格式化时间吧,使用该组件的格式化会造成从后台拿到的时间戳值与组件的值匹配不上。(我就是这样的...)

formatterTime: (time) => {
    const date = new Date(time)
    const year = date.getFullYear()
    const month = date.getMonth() + 1
    const day = date.getDate()
    // const hour = date.getHours()
    // const minutes = date.getMinutes()
    // const seconds = date.getSeconds()
    // const dateTime = year + '-' + month + '-' + day + ' ' + utils.checkLength(hour) + ':' + utils.checkLength(minutes) + ':' + utils.checkLength(seconds)
    const dateTime = year + '-' + month + '-' + day
    return dateTime
  },
  checkLength: (str) => {
    str = str.toString()
    if (str.length < 2) {
      str = '0' + str
    }
    return str
  },
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题