工单节点使用指南
• 请用平和的语言准确描述你所遇到的问题
• 厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
• 如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
xiaolanger

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

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

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

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

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


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