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

2018-10-22 19:55:00 +08:00
 xiaolanger
8632 次点击
所在节点    全球工单系统
53 条回复
KingEngine
2018-10-22 20:01:27 +08:00
安卓标配
Raymon111111
2018-10-22 20:08:30 +08:00
时间是负的让人很为难
rocbomb
2018-10-22 20:11:48 +08:00
难道你想带着小米手机穿越到古代?
求带啊
SuperMild
2018-10-22 20:15:26 +08:00
一般来说可以了
keinx
2018-10-22 20:37:09 +08:00
android 是基于 linux 的
linux 的基准时间是 1970 年 1 月 1 日 0 点。

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

其实还是懒得变吧
tia
2018-10-23 01:22:39 +08:00
我这里怎么是 1901 年
Lonely
2018-10-23 02:09:26 +08:00
iOS 的能翻到公元前好几千年😂
msg7086
2018-10-23 02:28:54 +08:00
@keinx Linus 表示 Unix 时间戳关我啥事,出门右转找 Unix 程序员啊。
dlsflh
2018-10-23 02:32:14 +08:00
@xiaolanger 你怎么看的?我能看到 1900.
weyou
2018-10-23 02:35:31 +08:00
@xiaolanger 谷歌日历是到 1900 年的
zwh2698
2018-10-23 03:22:37 +08:00
我猜和日历的实现有关,如果是查表法,所以就会限制,如果基于规则算就会没有多少关系,其实主要是阴历计算规则复杂,影响了阳历,为了加快计算我见过很多都是内置编年表,然后查。以上都是猜的
ShareDuck
2018-10-23 07:29:46 +08:00
@tia 你这个有 Bug,1901 年 10 月 1 日显然不是国庆节。哈哈。
opengps
2018-10-23 08:27:22 +08:00
现在用的时间戳就是从 1970 年开始算的,很多系统都直接遵循 linux 的这个标准
1900 相当于一个人为的标准调整
opengps
2018-10-23 08:28:30 +08:00
做过跨时区业务的人都特别喜欢用时间戳,然后展示时候配合而时区计算实际时间
TheBladeDancer
2018-10-23 08:42:25 +08:00
@ShareDuck 十月份名单加急处理,把你安排上

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/499980

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX