一、问题描述:
使用axios向后端发送时间(date)类型时,时区自动转换,后端接收到的时间数据不正确(时区不正确,提早八小时)
提交代码如下:
<template>
<div>
<el-button type="primary" @click="test">主要按钮</el-button>
</div>
</template>
<script>
export default {
data() {
return {}
},
methods: {
test() {
let date = new Date()
console.log(date)
this.axios
.post('Values', {
date1: date,
})
.then((response) => {
console.log(response)
})
},
},
}
</script>
<style>
</style>
在使用axios提交数据时,可以通过浏览器的Network工具看到请求数据,发现客户端的时间和发送到后端的时间数据并不一样,这就导致后端接收到的时间数据也不正确。通过观察可以得知,提交的时间要比客户端时间早八个小时,也就是从东 8 区(中国北京)的时间自动转换到 0 时区(格林威治)的时间,导致后端收到的也是0时区的时间。
二、解决方案:
- 后端使用ToLocalTime()转换为本地时间
- 使用moment.js插件
<template>
<div>
<el-button type="primary" @click="test">主要按钮</el-button>
</div>
</template>
<script>
export default {
data() {
return {}
},
methods: {
test() {
let date = this.moment(new Date()).format()
console.log(date)
this.axios
.post('Values', {
date1: date,
})
.then((response) => {
console.log(response)
})
},
},
}
</script>
<style>
</style>
使用moment插件进行日期格式化,会发现发送的时间数据不会自动转换时区了