精易论坛

标题: 关于【精易模块】【时间类全体函数】bug的的修复建议 [打印本页]

作者: 书香    时间: 2025-3-21 04:46
标题: 关于【精易模块】【时间类全体函数】bug的的修复建议
本帖最后由 书香 于 2025-3-21 05:26 编辑
大家使用精易模块的时候,可能发现了一个问题,那就是当时间间隔过大的时候会出现问题,比如时间_取时间间隔()

查看源代码
  
子程序名返回值类型公开备 注
时间_取时间间隔文本型 返回一个文本,表示“时间1”减去“时间2”之后间隔的天,时,分,秒。返回示例:3天13时56分27秒
参数名类 型参考可空数组备 注
时间1日期时间型
时间2日期时间型
变量名类 型静态数组备 注
剩余秒数A整数型 
剩余秒数B整数型 
剩余天整数型 
剩余小时整数型 
剩余分钟整数型 
剩余秒整数型 
返回时间文本型 
' 源码出处:[url=https://125.confly.eu.org/thread-14315424-1-1.html]https://125.confly.eu.org/thread-14315424-1-1.html[/url]
剩余秒数A = 取时间间隔 (时间1, 时间2, 8)
如果真 (剩余秒数A < 0)
剩余秒数A = 剩余秒数A × -1
剩余秒数B = 剩余秒数A % 86400
剩余天 (剩余秒数A - 剩余秒数B) ÷ 86400
剩余秒数A = 剩余秒数B
剩余秒数B = 剩余秒数A % 3600
剩余小时 (剩余秒数A - 剩余秒数B) ÷ 3600
剩余秒数A = 剩余秒数B
剩余秒数B = 剩余秒数A % 60
剩余分钟 (剩余秒数A - 剩余秒数B) ÷ 60
剩余秒 = 剩余秒数B
如果真 (剩余天 ≠ 0)
返回时间 = 到文本 (剩余天)“天”
如果真 (剩余小时 ≠ 0)
返回时间 = 返回时间 + 到文本 (剩余小时)“时”
如果真 (剩余分钟 ≠ 0)
返回时间 = 返回时间 + 到文本 (剩余分钟)“分”
如果真 (剩余秒 ≠ 0)
返回时间 = 返回时间 + 到文本 (剩余秒)“秒”
返回 (返回时间)


这里的参数用了整数型,整数类型占用4个字节,因此最大值为2147483647,也就是说当间隔超过这个值的时候,就会出现运算bug
例子:



时间类函数里面很多地方都是使用的整数类型,这导致了运算是超过了整数类型可以容纳的最大值,通过修改类型后

很明显,依旧不对

通过调试发现是易语言的取时间间隔出现问题



于是我选择使用时间戳来处理这个问题


这下好像没问题了(但是这种写法只能用于1970后的时间计算)
注:时间戳是自格林威治时间 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数,也被称为 Unix 时间戳

北京时间则为:1970 年 1 月 1 日 08:00:00,这里大家注意下
  
子程序名返回值类型公开备 注
时间_取时间间隔文本型 返回一个文本,表示“时间1”减去“时间2”之后间隔的天,时,分,秒。返回示例:3天13时56分27秒
参数名类 型参考可空数组备 注
时间1日期时间型
时间2日期时间型
变量名类 型静态数组备 注
剩余秒数A双精度小数型 
剩余秒数B双精度小数型 
剩余天双精度小数型 
剩余小时双精度小数型 
剩余分钟双精度小数型 
剩余秒双精度小数型 
返回时间文本型 
' 源码出处:[url=https://125.confly.eu.org/thread-14315424-1-1.html]https://125.confly.eu.org/thread-14315424-1-1.html[/url]
' 剩余秒数A = 取时间间隔 (时间1, 时间2, 8)
剩余秒数A = 到数值 (时间_到时间戳1 (时间1, #秒 )) - 到数值 (时间_到时间戳1 (时间2, #秒 ))
调试输出 (剩余秒数A)
如果真 (剩余秒数A < 0)
剩余秒数A = 剩余秒数A × -1
剩余秒数B = 剩余秒数A % 86400
剩余天 (剩余秒数A - 剩余秒数B) ÷ 86400
剩余秒数A = 剩余秒数B
剩余秒数B = 剩余秒数A % 3600
剩余小时 (剩余秒数A - 剩余秒数B) ÷ 3600
剩余秒数A = 剩余秒数B
剩余秒数B = 剩余秒数A % 60
剩余分钟 (剩余秒数A - 剩余秒数B) ÷ 60
剩余秒 = 剩余秒数B
如果真 (剩余天 ≠ 0)
返回时间 = 到文本 (剩余天)“天”
如果真 (剩余小时 ≠ 0)
返回时间 = 返回时间 + 到文本 (剩余小时)“时”
如果真 (剩余分钟 ≠ 0)
返回时间 = 返回时间 + 到文本 (剩余分钟)“分”
如果真 (剩余秒 ≠ 0)
返回时间 = 返回时间 + 到文本 (剩余秒)“秒”
返回 (返回时间)


i支持库列表   支持库注释   
spec特殊功能支持库



重点:
由于历史原因,1582年10月5日——1582年10月14日是不存在的,如果通过其他技术计算时间需要考虑这一点

希望官方可以早日修复时间类函数的bug


作者: wh1234567    时间: 2025-3-21 06:40
感谢分享
作者: 豆豆灰常开心    时间: 2025-3-21 07:11
下个学习一下
作者: 查过    时间: 2025-3-21 07:15
感谢楼主分享!
作者: 凌哥    时间: 2025-3-21 07:18
别指望更新了...还是自己修好后自己弄个单独的模块用吧
作者: kyo9766    时间: 2025-3-21 09:31
可以省略很多后期的隐患,感谢分享
作者: happyweeks365    时间: 2025-3-21 10:13
6666666666666666666666666
作者: 1184798949    时间: 2025-3-21 10:36
感谢分享
作者: 何浩文    时间: 2025-3-21 11:17
支持开源~!感谢分享
作者: 750391    时间: 2025-3-21 11:27
支持开源~!感谢分享
作者: dldxdg    时间: 2025-3-21 11:43
可以看看我分享的那个取时间间隔
作者: 财付通消息    时间: 2025-3-21 16:29
模块官方已经停更了
作者: 站在月光下想你    时间: 2025-3-21 17:30
官方好像不更新了已经.
作者: lxn2wyf    时间: 2025-3-21 19:56
哟,这个问题我也碰见过呢。试试看调整下参数输入的方式?或许是数据类型转换那边出了点小状况哈。
作者: 亿万    时间: 2025-3-21 20:24
        感谢分享
作者: 豆豆灰常开心    时间: 2025-3-22 07:07
全都是大佬~
作者: 查过    时间: 2025-3-22 07:11
感谢楼主分享!
作者: year1970    时间: 2025-3-22 07:54
感谢分享
作者: please    时间: 2025-3-22 09:36
感谢分享,支持开源!!!
作者: bianyuan456    时间: 2025-3-22 12:24
已经顶贴,感谢您对论坛的支持!
作者: please    时间: 2025-3-23 09:39
感谢分享,支持开源!!!
作者: wuhaibo    时间: 2025-3-23 11:03

感谢分享,支持开源!
作者: shituo    时间: 2025-3-24 22:41
不算bug,是你代码问题
作者: 神奇的哆啦A梦    时间: 2025-3-25 17:20
支持开源~!感谢分享




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4