V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
• 请用平和的语言准确描述你所遇到的问题
• 厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
• 如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
xiaolanger
V2EX  ›  全球工单系统

我想问一下,小米手机的日历程序,为什么只支持到了 1970 年,为了配合时间戳使用吗?

  •  
  •   xiaolanger · 2018-10-22 19:55:00 +08:00 · 8834 次点击
    这是一个创建于 2218 天前的主题,其中的信息可能已经有所发展或是发生改变。
    53 条回复    2018-10-26 00:32:40 +08:00
    KingEngine
        1
    KingEngine  
       2018-10-22 20:01:27 +08:00
    安卓标配
    Raymon111111
        2
    Raymon111111  
       2018-10-22 20:08:30 +08:00   ❤️ 2
    时间是负的让人很为难
    rocbomb
        3
    rocbomb  
       2018-10-22 20:11:48 +08:00
    难道你想带着小米手机穿越到古代?
    求带啊
    SuperMild
        4
    SuperMild  
       2018-10-22 20:15:26 +08:00
    一般来说可以了
    keinx
        5
    keinx  
       2018-10-22 20:37:09 +08:00
    android 是基于 linux 的
    linux 的基准时间是 1970 年 1 月 1 日 0 点。

    所以这和小米没有啥关系,也和 android 没有太大关系,这个要问 linus 当时为啥要把时间基准设置成 1970 年 1 月 1 日 0 点了
    wohenyingyu02
        6
    wohenyingyu02  
       2018-10-22 20:38:03 +08:00
    @Raymon111111 时间应该是 unsigned int 把,负不了😄
    ionblue
        7
    ionblue  
       2018-10-22 20:41:49 +08:00 via Android   ❤️ 2
    小米是因为安卓,安卓是因为 Linux,Linux 是因为 Unix,Unix 是因为丹尼斯,至于丹尼斯当年为什么这么干?那是因为他喵的本来只是想做个系统以方便移植游戏平时玩玩,谁会想到居然就流行起来了。
    Raymon111111
        8
    Raymon111111  
       2018-10-22 22:16:00 +08:00
    @wohenyingyu02 不一定啊 也可以是简单的 int
    xiaolanger
        9
    xiaolanger  
    OP
       2018-10-23 00:27:51 +08:00
    看了下 Android 上的 Google 日历貌似也是这样,苹果的就没事,不知道为什么要这样,不应该啊
    no1xsyzy
        10
    no1xsyzy  
       2018-10-23 01:10:12 +08:00
    所以 Linux 在转 64 位时间戳的时候为什么不加个后 32 位都是 0 的常数?时间戳转换就只需要改变这一个点
    或者让时间戳变 signed,就可以表示 1970 之前的时间了

    其实还是懒得变吧
    tia
        11
    tia  
       2018-10-23 01:22:39 +08:00
    我这里怎么是 1901 年
    Lonely
        12
    Lonely  
       2018-10-23 02:09:26 +08:00 via iPhone
    iOS 的能翻到公元前好几千年😂
    msg7086
        13
    msg7086  
       2018-10-23 02:28:54 +08:00
    @keinx Linus 表示 Unix 时间戳关我啥事,出门右转找 Unix 程序员啊。
    dlsflh
        14
    dlsflh  
       2018-10-23 02:32:14 +08:00 via Android
    @xiaolanger 你怎么看的?我能看到 1900.
    weyou
        15
    weyou  
       2018-10-23 02:35:31 +08:00 via Android
    @xiaolanger 谷歌日历是到 1900 年的
    zwh2698
        16
    zwh2698  
       2018-10-23 03:22:37 +08:00 via Android
    我猜和日历的实现有关,如果是查表法,所以就会限制,如果基于规则算就会没有多少关系,其实主要是阴历计算规则复杂,影响了阳历,为了加快计算我见过很多都是内置编年表,然后查。以上都是猜的
    ShareDuck
        17
    ShareDuck  
       2018-10-23 07:29:46 +08:00 via Android   ❤️ 18
    @tia 你这个有 Bug,1901 年 10 月 1 日显然不是国庆节。哈哈。
    opengps
        18
    opengps  
       2018-10-23 08:27:22 +08:00
    现在用的时间戳就是从 1970 年开始算的,很多系统都直接遵循 linux 的这个标准
    1900 相当于一个人为的标准调整
    opengps
        19
    opengps  
       2018-10-23 08:28:30 +08:00   ❤️ 1
    做过跨时区业务的人都特别喜欢用时间戳,然后展示时候配合而时区计算实际时间
    TheBladeDancer
        20
    TheBladeDancer  
       2018-10-23 08:42:25 +08:00
    @ShareDuck 十月份名单加急处理,把你安排上
    shakoon
        21
    shakoon  
       2018-10-23 08:47:12 +08:00
    三棒手机表示日历最小日期是 1902 年 1 月 1 日
    0312birdzhang
        22
    0312birdzhang  
       2018-10-23 08:50:56 +08:00 via iPhone
    @ionblue 被程序耽误的电竞玩家
    passerbytiny
        23
    passerbytiny  
       2018-10-23 09:01:43 +08:00
    以上说得都不对。时间值的存储格式主流有三种情况:年月日时分秒毫秒分别以单独的字节表示值然后组合;以 1970 年 1 月 1 日零点零分零秒为基准的秒数 /毫秒数 /浮点数;以 1900 年 1 月 1 日零点零时零分为基准的浮点数。但是请注意,三种存储方式都是允许负数的。并且 java.util.date 以及后继类都没有限制时间范围,故可以认为时间范围是无穷的。

    所以这锅 UNIX 时间戳、android、java 都不能背,只能是开发人员背,因为他们懒,根本没开发日历,而是只使用系统自带的日历。(与单纯的时间相比,日历复杂多了)。
    lilue
        24
    lilue  
       2018-10-23 09:07:33 +08:00
    IOS,我给翻到了 18 年,2000 年前
    cherrypi
        25
    cherrypi  
       2018-10-23 09:10:52 +08:00 via Android
    为啥我的小米 6 支持到 1901 年 1 月 1 日?
    secsilm
        26
    secsilm  
       2018-10-23 09:16:15 +08:00
    楼主什么手机哪个系统版本?我这米 6 MIUI 10 最新开发版能到 1901.1.1
    em2046
        27
    em2046  
       2018-10-23 09:17:22 +08:00
    ios 日历在 1583 年之前也无法显示年份了
    翻到 1583 之前,关闭程序,然后日历 App 就打不开了。。。
    daigouspy
        28
    daigouspy  
       2018-10-23 09:17:54 +08:00 via Android
    @ShareDuck 现在的也只是朝代节,不是国庆节。
    sujin190
        29
    sujin190  
       2018-10-23 09:21:49 +08:00   ❤️ 2
    日历和时间戳有啥关系?难道日历就不能另外数据结构?只能说 app 做的不行
    ShareDuck
        30
    ShareDuck  
       2018-10-23 09:28:49 +08:00
    @TheBladeDancer #20 你等一下,我去开一下门,有快递。
    JavaFirstMaster
        31
    JavaFirstMaster  
       2018-10-23 09:38:25 +08:00
    @daigouspy 求求你别秀了,十月份名额满了
    tourist2018
        32
    tourist2018  
       2018-10-23 10:36:16 +08:00
    系统自带吧 而且从 PM 角度看 1970 年以前确实没啥用处 毕竟智能手机才出来几年
    no1xsyzy
        33
    no1xsyzy  
       2018-10-23 10:46:27 +08:00
    @Lonely #12 翻了下,消失的 10 天还在,所以往前星期是错的。
    ryecrow
        34
    ryecrow  
       2018-10-23 10:58:47 +08:00
    @em2046 然后再往前翻会发现到 301 年的时候年份又回来了
    fffang
        35
    fffang  
       2018-10-23 12:31:34 +08:00
    你们这么一说日历 app 全是 bug ?
    chinawrj
        36
    chinawrj  
       2018-10-23 12:59:12 +08:00   ❤️ 1
    @keinx 牵强附会。从结果找源头。从日历角度来说,万年历都是可以的。
    ericv
        37
    ericv  
       2018-10-23 13:03:24 +08:00
    只能说。。。你不是程序员吧
    xiaolanger
        38
    xiaolanger  
    OP
       2018-10-23 13:40:25 +08:00
    我的是小米 6 MIUI10 稳定版


    @ericv #37 你是不是瞧不起我们 PHP ? 要引发战争么?
    xiaolanger
        39
    xiaolanger  
    OP
       2018-10-23 13:44:02 +08:00
    @dlsflh #14
    @secsilm #26
    @weyou #15
    我 google 日历我是通过之前的一个备用机看的,可能版本太老了吧
    @passerbytiny #23 我也纳闷呢,跟时间戳能有直接关系? 还有扯 Linux Unix 的。。。还不让查几十年前的日期了?
    xiaolanger
        40
    xiaolanger  
    OP
       2018-10-23 13:46:06 +08:00
    真是,楼上各位扯时间戳的,调戏的除外,剩下的有一个算一个,是不是真的思维局限了?
    dinghmcn
        41
    dinghmcn  
       2018-10-23 13:53:27 +08:00 via Android
    想想 c 是什么时候发明的,那时候为了节省内存选择近的时间作为起点;农历是查表,未来的具有不确定性
    xiaolanger
        42
    xiaolanger  
    OP
       2018-10-23 14:12:11 +08:00
    @dinghmcn #41 但这不是小米日历程序只能选择 1970 年之后的理由吧
    ericv
        43
    ericv  
       2018-10-23 14:23:31 +08:00
    @xiaolanger 表激动,并无此意。。。
    xiaolanger
        44
    xiaolanger  
    OP
       2018-10-23 14:50:24 +08:00
    @ericv #43 我代表拍黄片的放下了手中的刀
    leexy
        45
    leexy  
       2018-10-23 15:03:17 +08:00
    weyou
        46
    weyou  
       2018-10-23 15:14:45 +08:00
    只能说开发人员偷懒了, 直接用 timestamp 转换成日期,就是图个方便嘛
    RobertYang
        47
    RobertYang  
       2018-10-23 15:17:56 +08:00 via Android
    小米日历能到 1901 年啊。。。
    xiaolanger
        48
    xiaolanger  
    OP
       2018-10-23 18:05:43 +08:00
    @RobertYang #47 同一个世界,不同的小米
    pipilu112
        49
    pipilu112  
       2018-10-23 22:27:11 +08:00 via Android
    是为了阴历啊
    keinx
        50
    keinx  
       2018-10-24 11:56:47 +08:00
    @msg7086
    Unix 和 Linux 的基准时间是不一样的。。。。
    keinx
        51
    keinx  
       2018-10-24 11:57:53 +08:00
    @chinawrj
    我的意思是,他们都太懒了直接用了基准时间。
    alfredsun
        52
    alfredsun  
       2018-10-25 16:32:19 +08:00
    @xiaolanger 欧版 Mix2s MIUI10 只到 1970 年。。
    xiaolanger
        53
    xiaolanger  
    OP
       2018-10-26 00:32:40 +08:00
    @alfredsun #52 看来确实是小米的问题了!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6237 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 02:34 · PVG 10:34 · LAX 18:34 · JFK 21:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.