这是我第一次处理时区。这是场景:
- 服务器+数据库位于UTC时区
-
客户端1在IST中
客户端2位于EST
-
EST客户端存储的数据应在IST中正确显示给客户端,反之亦然
- 服务器运行cron作业并从数据库中读取数据。它需要正确显示分别针对其时区的EST和IST客户端的通知
技术
- 服务器操作系统-Ubuntu(EC2)
- 数据库-MySQL(UTC)
- 后端服务器-Node.js
- 前端-Angular.jS
我的想法
-
在数据库中,维护两列:created_at,timezone_offset
- created_at将所有内容存储在UTC中
- 偏移量将存储UTC和相应时区的差异
例如:IST的偏移量= 330(以分钟为单位)=> 5小时30分钟
-
每当发送请求到服务器的日期:
- 选择本地日期时间(created_at)
- 找到UTC的偏移量
- 使用时间将created_at转换为UTC
- 将转换后的created_at发送给服务器,将其偏移量
- 存储created_at,将其原样存储在数据库中
-
要在服务器上运行cron
- 使用created_at + offset从数据库中读取记录
-
返回API响应
- 返回created_at(采用UTC格式),返回json响应中每条记录的偏移量
- 客户端使用created_at +偏移量(使用时间)显示日期时间
处理时区是否正确?
我应该在MySQL中为create_at使用datetime数据类型吗?