首页 > 解决方案 > 时区处理 - 这是正确的方法吗?

问题描述

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

  1. 服务器 + 数据库位于 UTC 时区
  2. 客户端 1 在 IST 客户端 2 在 EST

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

  4. 服务器运行 cron 作业并从数据库中读取数据。它需要正确地向 EST 和 IST 客户端显示相应时区的通知

技术

  1. 服务器操作系统 - Ubuntu (EC2)
  2. 数据库 - MySQL (UTC)
  3. 后端服务器 - Node.js
  4. 前端 - Angular.js

我的想法

  1. 在数据库中,维护两列:created_at、timezone_offset

    • created_at 将以 UTC 格式存储所有内容
    • 偏移量将存储 UTC 和相应时区的差异示例:IST 的偏移量 = 330(以分钟为单位)=> 5 小时 30 分钟
  2. 每当向服务器发送带有日期的请求时:

    • 选择本地日期时间(created_at)
    • 查找与 UTC 的偏移量
    • 将 created_at 转换为 UTC(使用时刻)
    • 将转换后的 created_at ,偏移量发送到服务器
    • 存储 created_at ,数据库中的偏移量
  3. 在服务器上运行 cron

    • 使用 created_at + offset 从数据库中读取记录
  4. 返回 API 响应

    • 返回 created_at(UTC 格式),json 响应中每条记录的偏移量
    • 客户端使用 created_at + offset 显示日期时间(使用时刻)

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

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

标签: mysqldatetimetimezone

解决方案


推荐阅读