我无法理解服务器如何处理时区特定操作并向用户呈现本地信息。我读到您永远不需要存储用户本地时区,而只需将日期存储在 UTC 偏移时间戳中。
例如,我有一个位于加利福尼亚州的用户,但我的服务器位于纽约。我构建了一个日历应用程序,需要显示此人今天从午夜到午夜(含)的所有约会。我在数据库中查询所有约会,服务器生成 2 个日期,如下所示:
let date_1 = moment().startOf('day').utc();
let date_2 = moment().endOf('day').utc();
问题当然是 date_1
和 date_2
都是首先根据纽约时间生成的,比加利福尼亚时间早 4 小时,所以即使我运行如下查询:
SELECT * FROM some_table WHERE somedate BETWEEN date_1 AND date_2;
我最终得到的数据仍然不是用户所要求的。
我不需要知道该人的时区吗?还是我应该以前端不能简单地请求数据而必须提供 2 个日期的方式构建 api?服务器尝试计算用户请求的天数是否错误?
最佳答案
使用时间戳值存储在数据库中。 Get current timestamp 。 由于时间戳值总是唯一且通用的,因此为了获得正确的时区,您需要在前端处理它,
Date.now()
>> 1539606894329
new Date(1539606894329)
>> Mon Oct 15 2018 18:04:54 GMT+0530 (India Standard Time)
关于javascript - 当您的服务器位于不同时区时,如何对时区特定数据执行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52815473/