在项目中我们常常用到时间选择器、日期选择器和日期时间选择器,在获取选中的值时,往往跟我们向后台传的值的格式有所不同,下面我们就以日期时间为例,获取想要的数据格式,以及遇到的报错。

效果:

    

 

 <div class="block">
    <span class="demonstration">默认</span>
    <el-date-picker
      v-model="value1"
      type="datetime"
      @change="TimeChange"
      placeholder="选择日期时间">
    </el-date-picker>
  </div>

 我们在@change事件中获取它的值,我们将他打印出来

TimeChange(e) {
	var that = this
	console.log(e)  // 打印结果为:Thu Jun 30 2022 10:19:19 GMT+0800 (中国标准时间)
},

我们可以看到打印的数据为:Thu Jun 30 2022 10:19:19 GMT+0800 (中国标准时间)

但是我们所需要的数据结构为 " yyyy-mm-dd hh:mm:ss "的格式

首先我给标签添加了value-format属性

 <div class="block">
    <span class="demonstration">默认</span>
    <el-date-picker
      v-model="value1"
      type="datetime"
      @change="TimeChange"
      value-format = 'yyyy-mm-ddThh:mm:ss'
      placeholder="选择日期时间">
    </el-date-picker>
  </div>

         神奇的是,拿到的数据格式也是ok的,向后台传参也是没问题的,但就是报错

 然后又重新修改,通过Thu Jun 30 2022 10:19:19 GMT+0800 (中国标准时间)去获取相应的数据并组成所需的格式,完整代码:

<div class="block">
    <span class="demonstration">默认</span>
    <el-date-picker
      v-model="value1"
      type="datetime"
      @change="TimeChange"
      placeholder="选择日期时间">
    </el-date-picker>
  </div>
TimeChange(e) {
	var that = this
	var date = new Date(e);
	var y = date.getFullYear(); // 年
	var m = date.getMonth() + 1; // 月
	m = m < 10 ? ('0' + m) : m;
	var d = date.getDate(); // 日
	d = d < 10 ? ('0' + d) : d;
	var h = date.getHours(); // 时
	h = h < 10 ? ('0' + h) : h;
	var min = date.getMinutes(); // 分
	min = min < 10 ? ('0' + min) : min;
	var s = date.getSeconds(); // 秒
	s = s < 10 ? ('0' + s) : s;
	that.time = y + '-' + m + '-' + d + 'T' + h + ':' + min + ':' + s;//拼在一起
},

这样就不报错了,最后that.time拼接的方式可以根据自己需要去拼接!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐