我想问一下,小米手机的日历程序,为什么只支持到了 1970 年,为了配合时间戳使用吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
请用平和的语言准确描述你所遇到的问题
厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
xiaolanger
V2EX    全球工单系统

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

  •  
  •   xiaolanger 2018-10-22 19:55:00 +08:00 9334 次点击
    这是一个创建于 2555 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 日
    1daydayde
        22
    1daydayde  
       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 都不能背,只能是开发人员背,因为他们懒,根本没开发日历,而是只使用系统自带的日历。(与单纯的时间相比,日历复杂多了)。
    loek
        24
    loek  
       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     Solana     1121 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 23:05 PVG 07:05 LAX 16:05 JFK 19:05
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86