一、问题描述:
使用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时区的时间。

二、解决方案:

  1. 后端使用ToLocalTime()转换为本地时间
  2. 使用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插件进行日期格式化,会发现发送的时间数据不会自动转换时区了

03-05 15:10