递归火山软件开发平台

标题: 关于32位火山pc和易语言2038崩溃问题 [打印本页]

作者: heqianli    时间: 2025-1-20 21:30
标题: 关于32位火山pc和易语言2038崩溃问题
网上看了用32位时间戳计数器的32位程序在2038年崩溃。有大佬说 易语言到2038年的时候  HOOK一下就能解决,不是问题。

易语言到2038还管用么?火山pc 32位受不受影响呢。

作者: 兵三进一    时间: 2025-1-20 22:14
本帖最后由 兵三进一 于 2025-1-21 12:59 编辑

2038年什么概念?
作者: yuangao    时间: 2025-1-20 23:13
指的是时间戳超过2038-1-19, 返回负数吧..   易语言   * “-2147437696000”

火山好像不会2147454848
作者: Xelloss0618    时间: 2025-1-20 23:50
有问题的是unix时间戳,用有符号32位整数存储的话,到2038年就会数值溢出,出现计时错误。如果用无符号32位整数,则可以维持到2106年,如果改用64位长整数,那大概到太阳毁灭也用不完。

而易语言和火山的默认日期时间型并不是unix时间戳,而是微软的变体时间,类型是双精度小数,并不存在这种问题。

综上,只要你用了unix时间戳,易语言和火山和所有编程语言都会有这个问题,你自己修改代码,用长整数存储时间戳即可。
作者: kamikaze    时间: 2025-1-21 01:46
Xelloss0618 发表于 2025-1-20 23:50
有问题的是unix时间戳,用有符号32位整数存储的话,到2038年就会数值溢出,出现计时错误。如果用无符号32位 ...

X总太专业了,强的可怕
作者: heqianli    时间: 2025-1-21 09:08
Xelloss0618 发表于 2025-1-20 23:50
有问题的是unix时间戳,用有符号32位整数存储的话,到2038年就会数值溢出,出现计时错误。如果用无符号32位 ...

多谢大佬答疑解惑 感谢
作者: heqianli    时间: 2025-1-21 09:09
本帖最后由 heqianli 于 2025-1-21 09:13 编辑
yuangao 发表于 2025-1-20 23:13
指的是时间戳超过2038-1-19, 返回负数吧..   易语言   * “-2147437696000”

火山好像不会2147454848 ...

易语言本体在设计的时候  本体内部是否调用那个时间戳了  到2038吴总是不是也得小改一下易语言本体
作者: Xelloss0618    时间: 2025-1-21 10:49
heqianli 发表于 2025-1-21 09:09
易语言本体在设计的时候  本体内部是否调用那个时间戳了  到2038吴总是不是也得小改一下易语言本体 ...

易语言不知道,但参考火山官方时间类的源码,它基本没有用到unix时间戳。
C/C++里的时间戳类型是time_t,只要不是上古编译器(VS 2005之前),这个类型已经被改成长整数了。
当然,易语言用的是VC 6,官方库但用到时间戳的地方应该比较少,或者没有。
作者: heqianli    时间: 2025-1-21 13:54
Xelloss0618 发表于 2025-1-21 10:49
易语言不知道,但参考火山官方时间类的源码,它基本没有用到unix时间戳。
C/C++里的时间戳类型是time_t, ...

那就放心使用了   感谢X大
作者: heqianli    时间: 2025-1-21 13:56
兵三进一 发表于 2025-1-20 22:14
2038年什么概念?

13年 快得很 一眨眼的事
作者: yuangao    时间: 2025-1-21 19:07
heqianli 发表于 2025-1-21 09:09
易语言本体在设计的时候  本体内部是否调用那个时间戳了  到2038吴总是不是也得小改一下易语言本体 ...

听, X大佬的




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4