这是我第一次处理时区 . 这是场景:

  • 服务器数据库采用UTC时区

  • 客户端1在IST中,客户端2在EST中

  • EST客户端存储的数据应在IST中正确显示给客户端,反之亦然

  • Server运行cron job并从数据库中读取数据 . 它需要正确地向EST和IST客户端显示与其时区相关的通知

技术

  • 服务器操作系统 - Ubuntu(EC2)

  • 数据库 - MySQL(UTC)

  • 后端服务器 - Node.js

  • 前端 - Angular.jS

我的想法

  • 在数据库中,维护两列:created_at,timezone_offset

  • created_at将以UTC格式存储所有内容

  • offset将存储UTC和各个时区的差异示例:IST = 330(以分钟为单位)的偏移=> 5小时30分钟

  • 每当向具有日期的服务器发送请求时:

  • 选择本地日期时间(created_at)

  • 查找UTC的偏移量

  • 将created_at转换为UTC(使用时刻)

  • 将已转换的created_at,offset发送到服务器

  • store created_at,数据库中的偏移量

  • 在服务器上运行cron

  • 使用created_at偏移量从数据库中读取记录

  • 返回API响应

  • 返回created_at(以UTC为单位),json响应中每条记录的偏移量

  • 客户端使用created_at偏移量显示日期时间(使用时刻)

这是处理时区的正确方法吗?

我应该在MySQL中使用created_at的datetime数据类型吗?