Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >解决 axios 提交时间类型参数遇到的时区自动转换问题

解决 axios 提交时间类型参数遇到的时区自动转换问题

作者头像
CG国斌
发布于 2021-12-07 10:01:55
发布于 2021-12-07 10:01:55
1.7K00
代码可运行
举报
文章被收录于专栏:维C果糖维C果糖
运行总次数:0
代码可运行

文章目录

问题描述

在使用axios向后端异步发送时间类型(date)数据的时候,遇到了时间参数自动转换时区的问题。

如上图所示,通过时间组件选定时间之后,打印出了时间。

但是,在数据向后端传输的时候,通过 Chrome 浏览器的Inspect功能,查看Network,发现时间参数被自动修改了,我们选定的时间是2019-07-12 00:00:00,在传输的时候却被修改为2019-07-11 16:00:00,导致时间传到后端的参数值与我们期望的参数值不一致,两者相差 8 个小时,也就是从东 8 区(中国北京)的时间自动转换到 0 时区(格林威治)的时间。前端与后端交互的代码,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
handleSelectCondition(startDate, endDate) {
    this.axios
        .post('/notify/history/select/byCondition', {
            startDate: startDate,
            endDate: endDate
        })
        .then(response => {
            console.log('response: ' + response)
        })
        .catch(error => console.warn(error))
        .finally(() => (this.loading = false))
}

解决方法

为了解决时区自动转换的问题,我们使用moment组件,在传输参数之前,先对参数进行格式化。如果我们还没有安装moment组件,则需要先安装moment组件,其命令为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install --save moment

执行成功后,其会自动在package.jsonpackage-lock.json这两个文件中添加对moment组件的依赖,类似:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- package.json -->
"dependencies": {
    "moment": "^2.24.0"
}

<!-- package-lock.json -->
"moment": {
      "version": "2.24.0",
      "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
      "integrity": "sha512-bV7f+6l2QigeB*SM/6y87A8e7*/34/2ky5Vw4B9*dQg=="
}

安装完成moment组件,修改前端与后端交互的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
handleSelectCondition(startDate, endDate) {

	const moment = require('moment')

    const startDateStr = moment(startDate).format('YYYY-MM-DD HH:mm:ss')
    const endDateStr = moment(endDate).format('YYYY-MM-DD HH:mm:ss')
    
    this.axios
        .post('/notify/history/select/byCondition', {
            startDate: startDateStr,
            endDate: endDateStr
        })
        .then(response => {
            console.log('response: ' + response)
        })
        .catch(error => console.warn(error))
        .finally(() => (this.loading = false))
}

对比修改前与修改后的代码可见,在通过axios向后端传输时间类型的参数前,我们先对其进行了格式化操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const moment = require('moment')

const startDateStr = moment(startDate).format('YYYY-MM-DD HH:mm:ss')
const endDateStr = moment(endDate).format('YYYY-MM-DD HH:mm:ss')

修改后,进行测试,观察console.log的日志输出:

如上图所示,我们选定的两个时间分别为2019-07-21 00:00:002019-07-31 00:00:00

最后,我们在来观察Network里面显示的实际传输的值,显然两者相同。至此,问题解决!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/07/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
解决 axios 提交时间类型参数遇到的时区自动转换问题
在使用axios向后端异步发送时间类型(date)数据的时候,遇到了时间参数自动转换时区的问题。
CG国斌
2019/10/09
3K0
前后端时间转换的那些常见问题及处理方法
在现代的Web开发中,前后端分离的架构已经成为主流,尤其是在Spring Boot和Vue.js的组合中。开发者在这种架构下经常遇到的一个问题就是如何处理时间的转换和显示。前端和后端对时间的处理方式不同,可能会导致时间在传递过程中出现问题,比如时区不同步、格式不一致等。因此,本文将详细讨论在Spring Boot + Vue前后端分离架构中如何处理时间转换问题,并提供一些解决方案。
繁依Fanyi
2024/08/16
6190
【mysql】日期与时间类型
YEAR类型用来表示年份,在所有的日期时间类型中所占用的存储空间最小,只需要1个字节的存储空间。
兮动人
2022/03/12
4.6K0
当前时区时间 转换为 目标时区时间
张紫娃
2023/07/21
4990
当前时区时间 转换为 目标时区时间
mysql 关于时间类型的刨坑之路
前两天有做一个基于binglog的数据库实时同步,一张老数据表里有DATETIME、TIMESTAMP不同的时间字段类型,看起来值都是一样的,并且默认值都设置的 0000-00-00 00:00:00,导致我这边读取binlog更新数据库直接悲剧。
用户2825413
2019/07/16
1.7K0
mysql 关于时间类型的刨坑之路
目标时区时间 转换为 当前时区时间
张紫娃
2023/07/21
4390
目标时区时间 转换为 当前时区时间
前端固定时区与根据地区动态展示时区的两种实现方式
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
Lorin 洛林
2025/02/07
1890
JMeter 内置日期(时间)函数总结
http://jmeter.apache.org/changes_history.html
授客
2019/09/11
2.6K0
JMeter 内置日期(时间)函数总结
前端小知识11点
参考:页面显示LCD液晶字体,特殊字体,@font-face属性详细用法(https://blog.csdn.net/sunshine_han/article/details/78258880)
进击的小进进
2019/12/16
1K0
前端小知识11点
【重学 MySQL】五十七、日期与时间类型
在MySQL中,日期与时间类型用于存储和操作日期和时间数据。这些类型根据所需存储的信息的精确度和范围而有所不同。
用户11332765
2024/10/28
4030
【重学 MySQL】五十七、日期与时间类型
把当前时区时间视为某一时区时间 并将其转换为 目标时区时间
张紫娃
2023/07/21
2520
把当前时区时间视为某一时区时间 并将其转换为 目标时区时间
moment格式化时间使用方法
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>moment格式化时间使用方法</title> <!-- 脚本 --> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script> <!-- 语言包 --> <scr
越陌度阡
2020/11/26
2.3K0
moment格式化时间使用方法
Vue学习笔记之moment.js日期处理控件
moment可以方便的计算自然月或者自然年份,避免使用固定天数或者月份计算导致结束日期错乱问题。
Jetpropelledsnake21
2022/11/12
13.6K0
Vue学习笔记之moment.js日期处理控件
MySQL 中的日期时间类型
各类型都有具体的取值范围,超出或非法的其他值时,MySQL 会回退到 0。TIMESTAMP 类型是个例外,给它设置一个超出范围的值时,将保存上该类型允许的最大值。
星哥玩云
2022/08/18
7.6K0
常用的JS 时间转换相关代码!
1、获取当前时间往前往后多少天! 代码 function getNumTime(num) { let afterDate = new Date(); afterDate.setDate(afterDate.getDate() + num); let year = afterDate.getFullYear(); let month = afterDate.getMonth() + 1; let day = afterDate.getDate(); if (month > 0 &&
执行上下文
2022/07/26
2.4K0
MySQL中的时间类型
时间是一类重要的数据,MySQL中有多种关于时间的类型可以选择。这篇文章主要介绍MySQL中的时间类型,主要参考MySQL文档:https://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html
valineliu
2022/08/30
11.1K1
MySQL中的时间类型
nodejs,mongodb不同时区问题
不同国家,使用不同时区,而服务器代码却在国内,跨时区日期不同,根据日期查询,查询不到数据了
winty
2020/10/09
2K0
MySQL时间类型差异
DATE 用于表示 年月日,如果实际应用值需要保存 年月日 就可以使用 DATE。
用户10325771
2023/03/01
2.9K0
一文带你入坑JDK8的新日期时间类 LocalDate、LocalTime、LocalDateTime
参考 https://blog.csdn.net/duan196_118/article/details/111597682 https://blog.csdn.net/qq_24754061/article/details/95500209 https://xijia.blog.csdn.net/article/details/106007147
时间静止不是简史
2023/02/23
5K0
一文带你入坑JDK8的新日期时间类 LocalDate、LocalTime、LocalDateTime
Hive 时间转换函数使用心得
Hive sql 与传统的 oracle 或者mysql 的时间转换函数有一些不同,对于想将传统数据库迁移到hdfs 用 hive sql 进行处理的任务,如何用 hive sql 实现传统数据库sql 时间转换函数,是一个必须要解决的问题。
mikealzhou
2018/01/20
37K0
相关推荐
解决 axios 提交时间类型参数遇到的时区自动转换问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验