各位大神,一直想请教个问题。
就是Linux下的时间戳,time_t长度为32位的,是从1970->2038年1月多....
到2038年后,应该怎样处理呢?
现在UI里面设置时间限制到在2038年...2038年很快也就到了
离线
现在 time_t 已经是64bit了,可以用到人类飞出太阳系那时候。
离线
现在 time_t 已经是64bit了,可以用到人类飞出太阳系那时候。
现在用的ARM IC大都还是32bit吧? 如C100/V3s
离线
和硬件的体系架构没有关系,这个是由软件处理的。
离线
linux5.10 kernel已经修好了,能熬到2486年,但其他程序就难说了
离线
linux5.10 kernel已经修好了,能熬到2486年,但其他程序就难说了
linux 3.x和4.x的呢 ?
现在有两个项目在用
离线
有没有一种可能性,你的产品用不到2038年
离线
xiang 说:linux5.10 kernel已经修好了,能熬到2486年,但其他程序就难说了
linux 3.x和4.x的呢 ?
现在有两个项目在用
看下内核源码 include/linux/types.h 头文件里的 time_t 是多少位就知道了。
我的 linux 4.x内核,我看了下, time_t 是long型的,所以是32位(long long才是64位)。
然而,我的libc里的time_t是64位的。主要还是看内核?
最近编辑记录 海石生风 (2022-04-01 11:09:58)
离线
经测试:虽然我的libc的time_t是64位但内核的time_t是32位,在UTC时间2038-01-19 03:14:07(即本地时间(东8区)2038-01-19 11:14:07)之后,我的应用程序的时间(通过time(NULL)获取)就变回1901-12-14的时间了,busybox里的date命令也一样。
是的,我也测试了,2038-01-19后就出错了。
这个问题不得不考虑了。
离线
最近开始在项目中使用64位时间戳了,客户验收都要设置到2038年以后。
请教下。
您是如何处理的呢?
离线
在2038年前升级成64位。
离线
kernel 5.1版本新增了 time64 syscall
所以你需要升级到 5.1内核,然后用户态需要musl 1.2+ or glibc 2.32+
如果你说你的sdk没有kernel5.1 那你只能自己想办法,要么换芯片,要么自己给kernel打补丁
最近编辑记录 mengxp (2022-04-02 11:46:05)
离线
xiang 说:linux5.10 kernel已经修好了,能熬到2486年,但其他程序就难说了
linux 3.x和4.x的呢 ?
现在有两个项目在用
3.x和4.x官方暂时没打补丁,但之后4.x有望能有补丁,但如果是芯片的sdk基本就没戏了,基本靠自己搞
离线
kernel 5.1版本新增了 time64 syscall
所以你需要升级到 5.1内核,然后用户态需要musl 1.2+ or glibc 2.32+如果你说你的sdk没有kernel5.1 那你只能自己想办法,要么换芯片,要么自己给kernel打补丁
谢谢!
看来是要自己搞了。
离线
# date "2038-1-1"
Fri Jan 1 00:00:00 CET 2038
#
#
# date "2039-1-1"
date: invalid date '2039-1-1'
#
#
果然, TMD,这F1C100s Linux3.10 寿命也就是2038年了。
离线
这个问题必须提前解决的。假如某个产品一旦出去就要用个10年以上,那么就要在2028年之前解决该问题。根本不能拖到2038年再说。
离线
这个问题必须提前解决的。假如某个产品一旦出去就要用个10年以上,那么就要在2028年之前解决该问题。根本不能拖到2038年再说。
是呀,各国的军事装备也要检查啊,提前模拟一下2038千年虫,锅锅不想死得不明不白。
离线
假如我的产品规划寿命是15年,那么2038回退15年就是2023年;也就是我现在必须已经解决2038问题!
离线
[01.881][mmc]: mmc exit start
[01.901][mmc]: mmc 2 exit ok
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.9.191 (memory@ubuntu) (gcc version 5.3.1 20160412 (Linaro GCC 5.3-2016.05) ) #10 SMP PREEMPT Thu Apr 11 08:55:32 CST 2024
#
# date "2039-1-1 12:12:12"
Sat Jan 1 12:12:12 CST 2039
#
#
# date +"%Y-%m-%d %H:%M:%S"
2039-01-01 12:12:14
#
#
#
# date "2049-1-1 12:12:12"
Fri Jan 1 12:12:12 CST 2049
#
#
# date +"%Y-%m-%d %H:%M:%S"
2049-01-01 12:12:14
#
A133 Linux 4.9 2038正常
离线
电子产品很难到哪个时候
离线
全志 T113-S3 Linux5.4 也有这个bug
D1-H 正常
看来64bit系统低版本的Linux就可以用,32bit系统要升高版本的Linux才行?
离线