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

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

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

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

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

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


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