前端选择日期后,但是传给后端的日期是前一天的

大年初九,开工啦!祝大家:新的一年能学到更多有用的知识,薪资也能蹭蹭蹭的往上涨!

话说回来,开年上班第一天遇到一个bug,使用饿了么的时间选择组件时,选中的时间与传给后端的时间相差了整整一天,上网查找资料发现原来是时区的问题,element-ui中时间控件的默认时间为国际标准时间,所以与北京时间差8个小时,只需要把时区改为东八就行,但这并不能解决我目前的需求,所以使用另一种方法

加入

format="YYYY-MM-DD"   //选中之后在页面上展示的格式
value-format="YYYY-MM-DD"    //导致缺少一天的罪魁祸首,需要添加格式化模板,就不会少了

必须得大写,不然不生效(有的分享者没写规范,导致我多走了好几次弯路)

 <el-date-picker
            type="date"
            placeholder="选择日期"
            v-model="ruleForm.invalidDate"
            @change="publishDateChange"
            style="width:460px"
            format="YYYY-MM-DD"//选中之后在页面上展示的格式
            value-format="YYYY-MM-DD"//导致缺少一天的罪魁祸首,需要添加格式化模板,就不会少了
          ></el-date-picker>

到这如果后端要的是yyyy-mm-dd格式的,那么就结束了后面的不需要看了。

但是我这个后端要求的是UTC格式的,那么继续处理

写一个yyyy-mm-dd转UTC格式的方法

const dataChange = (item: any) => {
  // 将日期字符串转换为Date对象
  const dateObj = new Date(item);
  console.log(dateObj, 'dateObj');
  // 获取时间戳(毫秒)
  const timestamp = dateObj.getTime();
  console.log(timestamp, 'timestamp');
  
  // 转换格式
  const outputDate = new Date(timestamp + 8* 60 * 60 * 1000).toISOString().replace('.000Z', '.000Z');
  console.log(outputDate, 'outputDate');

  return outputDate;
};

正常这样转换的话得到的时分秒是固定的,是早上08:00:00

我的需求是需要当前的操作时间,故继续处理

        

const dataChange = (item: any) => {
  // 将日期字符串转换为Date对象
  const dateObj = new Date(item);
  console.log(dateObj, 'dateObj');
  // 获取时间戳(毫秒)
  const timestamp = dateObj.getTime();
  console.log(timestamp, 'timestamp');


  // 获取当前的时分秒
  const myDate = new Date();
  let h = myDate.getHours(); // 获取当前小时数(0-23)
  let m = myDate.getMinutes(); // 获取当前分钟数(0-59)
  let s = myDate.getSeconds(); // 获取当前秒数(0-59)


  // 转换格式
  const outputDate = new Date(timestamp + h * 60 * 60 * 1000 + m * 60 * 1000 + s * 1000).toISOString().replace('.000Z', '.000Z');
  console.log(outputDate, 'outputDate');

  return outputDate;
};

获取当前的时分秒,再转成毫秒,再进行格式转换就能满足我的需求了

最后希望大家在以后的工作上不要遇到奇奇怪怪的需求,再见!

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
前端使用 AJAX 将数据后端的一般流程如下: 1. 在前端使用表单或其他方式收集数据,例如用户输入姓名、电子邮件等信息。 2. 创建一个包含数据的 JavaScript 对象或 JSON 对象。 3. 创建一个 XMLHttpRequest 对象。 4. 使用 XMLHttpRequest 对象将数据作为 POST 请求发送到后端。 5. 后端接收请求并处理请求,从请求体中解析出数据。 6. 将数据插入到数据库或执行其他业务逻辑。 7. 返回响应,例如一个成功或失败的消息。 例如,以下是使用 AJAX 将数据发送到后端的示例代码: ```javascript // 收集数据 const data = {name: "John", email: "john@example.com"}; // 发送数据到后端 const xhr = new XMLHttpRequest(); xhr.open("POST", "/api/data"); xhr.setRequestHeader("Content-Type", "application/json"); xhr.onreadystatechange = function() { if (this.readyState === XMLHttpRequest.DONE && this.status === 200) { console.log(this.responseText); // 输出响应 } }; xhr.send(JSON.stringify(data)); ``` 这里使用 XMLHttpRequest 对象将数据作为JSON对象发送到后端的 `/api/data` 路由,并设置请求头 `Content-Type` 为 `application/json`。后端可以使用Express框架来解析请求体,例如: ```javascript const express = require("express"); const app = express(); // 解析JSON请求体 app.use(express.json()); // 处理POST请求 app.post("/api/data", (req, res) => { const data = req.body; console.log(data); // 输出{name: "John", email: "john@example.com"} // 将数据插入到数据库或执行其他业务逻辑 res.send("成功"); // 返回响应 }); // 启动服务器 app.listen(3000, () => { console.log("Server is running on port 3000"); }); ``` 这里使用Express中间件 `express.json()` 来解析JSON请求体,并使用 `req.body` 获取请求体中的数据。后端可以使用这些数据插入到数据库或执行其他业务逻辑,并返回响应。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值