javascript - 可以在请求中发送客户端时区偏移量吗?
问题描述
我在客户端上有两个日期
openTime: 2020-01-01 00:00:000 (GMT+2)
closeTime: 2020-01-01 06:00:000 (GMT+2)
在将其发送到服务器之前,我将它们转换为 ISO
openTime.toISOString() // 2019-12-31T22:00:00.000Z
closeTime.toISOString() // 2020-01-01T04:00:00.000Z
服务器接收这些日期并应用验证逻辑
isSameDay(openTime, closeTime) // false
比较结果为假。它的发生是因为时区。每当openTime
这样的时间转换为 UTC 时,日期“跳转”到不同的日期。
转换为 ISO 之前
openTime: 2020-01-01 00:00:000
转换为 ISO 后
openTime: 2019-12-31T22:00:00.000Z
如何解决这个问题?
- 是否可以将客户发送到&值
timeZoneOffset
旁边。openTime
closeTime
- ..或者,使用将时区添加到 ISO 字符串的自定义格式发送
openTime
& ?closeTime
解决方案
FWIW,我会采用您的用时区格式化日期的概念。将时区设为+HH:MM
或-HH:MM
(四位数),JavaScriptDate
对象将能够正确解析它。(这是 JavaScript 支持的ISO 8601子集的一部分。)例如,2021-08-02T16:03:26.499+02:00
.
然后,在您的服务器端,要查看开盘和收盘是否在同一天,您可以使用字符串比较:open.substring(0, 10) === close.substring(0, 10)
.
推荐阅读
- android - React Native App 中的 Flutter Device Preview 等价物?
- r - 在 Windows 上离线安装 R 包“rgdal”及其外部依赖项
- python - 命令行不使用 conda 环境中的 python,即使它处于活动状态,可能是 .bash_profile 中的问题?
- java - 如何使用 try catch 继续循环?
- azure - 我的 Azure 帐户中所有这些未命名的服务主体是什么?
- python - 如果值已更改,可编辑 Bokeh DataTable 中的颜色文本
- mule - 如何在 mule4 中为 2 位数字格式化月/日?
- python - 我无法在 Selenium 机器人框架中的 Edge Chromium 浏览器中运行测试用例。你能帮我吗
- asp.net-core - 使用单个可执行文件在 Windows 服务中托管 ASP.NET Core 应用程序总是会给出错误的工作目录路径
- javascript - 如何在通知中使通知图标向右