【问题标题】:jQuery Ajax is adding timestamp on dates automaticallyjQuery Ajax 自动在日期上添加时间戳
【发布时间】:2021-03-01 15:06:36
【问题描述】:

我有 mysql 查询,它返回一些带日期的数据。当我请求 ajax 请求时,它会在我的响应中添加时间戳。

有什么办法让它不会在响应中自动添加时间戳。

jQuery.ajax({
  url: "/getdata",
  type: "POST",
  data: { },
  success: function (result, textStatus, jqXHR) {
    console.log(result)
  }
});
var query = "SELECT SUM(`id`) as `total`,DATE(`log_date`) as `log_date` from `mytable` Group by `log_date`"

这是我的回复,将T18:30:00.000Z 添加到日期末尾:

[
  RowDataPacket { total: 1, log_date: 2020-11-09T18:30:00.000Z },
  RowDataPacket { total: 10, log_date: 2020-11-10T18:30:00.000Z },
]

谢谢

【问题讨论】:

  • 你能包含你的代码吗?
  • @tonoslfx 我已经添加了代码..

标签: javascript jquery node.js ajax


【解决方案1】:

这不是 jQuery 问题,它是 JS 和 PHP 的混合,以及您如何在数据库中存储日期值。

JS Date 对象有也包含时间值。没有仅限日期的数据类型。因此,您来自 PHP 的响应会被解释为您返回的日期,并会在其中添加时间 00:00:00 以保持有效性。

我可以从您的个人资料中看到您在印度,因此您的时区偏移量为 +5:30,因此 JS 假定日期为您的本地格式并尝试通过从中减去 5:30 将其转换为 UTC。因此,结果日期比16:30:00 的实际值早 1 天。

要解决此问题,我建议您完整返回您的日期ISO8601 format,包括时间和偏移量,因此 JS 不会试图克服歧义。

【讨论】:

  • var newdate = new Date('2020-11-09T18:30:00.000Z').toISOString().split("T")[0];解决了我的问题
  • 很高兴它帮助您找到了解决方案
猜你喜欢
  • 1970-01-01
  • 2011-09-02
  • 2020-02-20
  • 1970-01-01
  • 2021-12-03
  • 2023-03-31
  • 2016-02-26
相关资源
最近更新 更多