【发布时间】:2022-01-12 22:39:59
【问题描述】:
默认情况下,当 JavaScript 对象包含 Date 对象时,Axios 会将其序列化为 UTC。这意味着使用时区转换传输的时间。这不适用于我的用例。我需要发送没有时区转换为 UTC 的时间。
我实现了一个基于#1548的自定义序列化器,但是没有效果。我已经验证配置正在修改,但是当我查看请求负载时,日期仍然使用 UTC (2022-02-03T04:59:00.000Z)。
注意:我的逻辑比较复杂,我在下面的代码中使用 toLocalString() 来简化示例。
const a = axios.create()
a.interceptors.request.use((config) => {
config.paramsSerializer = (params) =>
qs.stringify(params, {
serializeDate: (date: Date) => date.toLocaleString(),
})
return config
})
有人知道为什么我不能覆盖默认行为并使用我自己的日期格式吗?
环境 Axios 版本 0.21.1
【问题讨论】:
-
如果您需要用户时区信息,我发现最好将日期(即时)作为时间戳或 ISO 8601 UTC 日期字符串以及用户时区发送,例如
{ date: "2022-01-12T00:00:00.000Z", tz: "America/New_York" } -
是的,但这不是问题。
-
这就是为什么它是评论而不是答案
标签: javascript typescript axios interceptor utc