V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Hackathon
V2EX  ›  问与答

关于 UTC 和 CTS

  •  
  •   Hackathon · 2015-04-13 13:10:43 +08:00 · 4132 次点击
    这是一个创建于 3508 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1、 数据库里存储时间的时候,存储 "UTC" 、 "CTS"和"时间戳" 各有啥优缺点?

    2、 提供接口给 Web、Android、iOS,返回时间使用 "UTC字符串"、 "CTS字符串"和"格式化好的字符串" 各有啥优缺点?
    第 1 条附言  ·  2015-04-13 19:15:49 +08:00
    囧, 写错了, CTS ==> CST
    10 条回复    2015-04-14 15:59:29 +08:00
    ryd994
        1
    ryd994  
       2015-04-13 14:04:04 +08:00 via Android   ❤️ 1
    数据库里本质上都是时间戳——你不会存成字符串的………对吧?
    客户端也是返回时间戳最好,在客户端上做一下格式化很难么?
    网页的话只能输出用户友好的,这个没办法
    Hackathon
        2
    Hackathon  
    OP
       2015-04-13 14:38:57 +08:00
    @ryd994

    嗯啊, 不是字符串,而是 datetime

    mysql> show create table message_messageinfo;
    +---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table |
    +---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | message_messageinfo | CREATE TABLE `message_messageinfo` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `created_at` datetime NOT NULL,
    `updated_at` datetime NOT NULL,
    `title` varchar(255) NOT NULL,
    `content` longtext NOT NULL,
    `status` tinyint(1) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 |
    +---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.01 sec)


    刚去瞅了下 V2EX 的, http://www.v2ex.com/api/topics/latest.json, 返回的是时间戳
    jokester
        3
    jokester  
       2015-04-13 14:52:47 +08:00   ❤️ 1
    到View之前我都尽量用timestamp
    Hackathon
        4
    Hackathon  
    OP
       2015-04-13 14:56:29 +08:00
    @jokester 那可以详细的说说, 不这样可能会碰到什么坑吗?
    bcxx
        5
    bcxx  
       2015-04-13 15:53:53 +08:00   ❤️ 1
    UTC & iso8601 all the time! 其实大部分情况下你能保留到时区信息就可以了……
    jokester
        6
    jokester  
       2015-04-13 16:17:41 +08:00   ❤️ 1
    @Hackathon 也不算坑吧。。就是作为API很少要提供字符串格式化/时区转换 之类功能
    这些给客户端用本地API做,两边都自由些
    julyclyde
        7
    julyclyde  
       2015-04-13 20:32:12 +08:00   ❤️ 1
    注意CST并不简单等于UTC+8
    为了避免转换错误,自己的代码里不要进行时区加减计算
    nirocfz
        8
    nirocfz  
       2015-04-13 23:15:41 +08:00   ❤️ 1
    egen
        9
    egen  
       2015-04-14 00:06:56 +08:00   ❤️ 2
    不要用 CST 时区,巨坑

    CST可以同时代表如下 4 个不同的时区:
    Central Standard Time (USA) UT -6:00
    Central Standard Time (Australia) UT +9:30
    China Standard Time UT +8:00
    Cuba Standard Time UT -4:00(夏时制,冬时至-1)

    而且就算是Central Standard Time,同一地区的不同时间有时候是CST,有时候是DST
    对于一直生活在 UTC+8 时区的我实在搞不清这么多时区规则
    julyclyde
        10
    julyclyde  
       2015-04-14 15:59:29 +08:00
    @egen 你后半段说的不对。DST只是某个时区的组成部分而已。正确的说法是有时+9:30有时加的更多。但都叫Central Standard Time
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5419 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:43 · PVG 11:43 · LAX 19:43 · JFK 22:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.