V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
工单节点使用指南
• 请用平和的语言准确描述你所遇到的问题
• 厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
• 如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
xiaolanger

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

  •  
  •   xiaolanger · Oct 22, 2018 · 9792 views
    This topic created in 2752 days ago, the information mentioned may be changed or developed.
    53 replies    2018-10-26 00:32:40 +08:00
    KingEngine
        1
    KingEngine  
       Oct 22, 2018
    安卓标配
    Raymon111111
        2
    Raymon111111  
       Oct 22, 2018   ❤️ 2
    时间是负的让人很为难
    rocbomb
        3
    rocbomb  
       Oct 22, 2018
    难道你想带着小米手机穿越到古代?
    求带啊
    SuperMild
        4
    SuperMild  
       Oct 22, 2018
    一般来说可以了
    keinx
        5
    keinx  
       Oct 22, 2018
    android 是基于 linux 的
    linux 的基准时间是 1970 年 1 月 1 日 0 点。

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

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

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


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