在项目中我们常常用到时间选择器、日期选择器和日期时间选择器,在获取选中的值时,往往跟我们向后台传的值的格式有所不同,下面我们就以日期时间为例,获取想要的数据格式,以及遇到的报错。
效果:
<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拼接的方式可以根据自己需要去拼接!