是否可以在请求中发送客户端时区偏移?



我在客户端有两个日期

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

如何解决这个问题?

  1. 是否可以在openTime旁边发送客户端timeZoneOffset&closeTime值。
  2. . .或者,发送openTime&closeTime与自定义格式,其中添加时区到ISO字符串?

顺带一讲,我同意你用时区来格式化日期的想法。将时区部分设置为+HH:MM-HH:MM(四位数字),JavaScriptDate对象将能够正确解析它。(这是JavaScript支持的ISO 8601子集的一部分。)例如,2021-08-02T16:03:26.499+02:00

然后,在服务器端,要查看打开和关闭是否在同一天,您可以使用字符串比较:open.substring(0, 10) === close.substring(0, 10).

最新更新