开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: 千狐
收起左侧

[已解决] 取时间间隔() 返回结果整数溢出为负数咋办?

 关闭 [复制链接]

结帖率:93% (26/28)
发表于 2025-8-11 19:19:51 | 显示全部楼层   河北省唐山市
千狐 发表于 2025-8-11 18:51
转成时间戳后 那咋转回 #天 #秒  毕竟我是要做判断的 如果真(取时间间隔(时间1,时间2,#秒)> 10) ...

代码如下:

.版本 2
.支持库 spec

局_剩余秒数 = 30000  ' 入口时间
局_天数 = 局_剩余秒数 \ 86400
局_剩余秒数 = 局_剩余秒数 % 86400
局_小时 = 局_剩余秒数 \ 3600
局_剩余秒数 = 局_剩余秒数 % 3600
局_分钟 = 局_剩余秒数 \ 60
局_剩余秒数 = 局_剩余秒数 % 60
调试输出 (局_天数, 局_小时, 局_分钟, 局_剩余秒数)
回复

使用道具 举报

结帖率:62% (8/13)

签到天数: 2 天

 楼主| 发表于 2025-8-11 19:21:52 | 显示全部楼层   福建省泉州市
亮蓝色的风 发表于 2025-8-11 19:01
先判断下年份行不行?

[e=0].版本 2

不太行吧,某些修仙文游 元婴修炼几亿年都超出整数9位数溢出了
回复

使用道具 举报

结帖率:62% (8/13)

签到天数: 2 天

 楼主| 发表于 2025-8-11 19:47:09 | 显示全部楼层   福建省泉州市
cunanhai 发表于 2025-8-11 19:05
[e=0].版本 2
.支持库 spec

调试输出 (时间_到时间戳 (到时间 (“1825年8月11日19时1分35秒”), 真, ))'得到:-261556208     时间戳是不能低于1970-01-01 08:00:00 否则结果不对了

点评

时间戳,是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数(不考虑闰秒),用于表示一个时间点。 1825年,在什么情况会用到?基本没有啊.尤其还是还要取1825年的时间间隔,那基本才没有这种场景.   河北省唐山市   详情 回复 发表于 2025-8-11 22:14
回复

使用道具 举报

结帖率:62% (8/13)

签到天数: 2 天

 楼主| 发表于 2025-8-11 19:50:58 | 显示全部楼层   福建省泉州市
阿杰大大 发表于 2025-8-11 19:02
转换为时间戳后,比如你先判断到期时间是多少天,假设你是10位时间戳(秒),然后一天是86400秒,一除,你就知道 ...

调试输出 (到长整数 (时间_到时间戳 (到时间 (“1825年8月11日19时1分35秒”), , )))  得到-261556208000    时间戳是不能低于1970-01-01 08:00:00否则结果不对了
回复

使用道具 举报

结帖率:97% (69/71)

签到天数: 7 天

发表于 2025-8-11 21:33:50 | 显示全部楼层   河北省廊坊市
千狐 发表于 2025-8-11 19:47
调试输出 (时间_到时间戳 (到时间 (“1825年8月11日19时1分35秒”), 真, ))'得到:-261556208     时间戳 ...

时间戳从‌1970年1月1日00:00:00 UTC(协调世界时 咱们是+8时区)‌开始计算,到当前时间的总秒数(通常以毫秒为单位)

再往前的时间戳是负数很正常吧?
回复

使用道具 举报

结帖率:93% (26/28)

签到天数: 7 天

发表于 2025-8-11 22:14:52 | 显示全部楼层   河北省唐山市
千狐 发表于 2025-8-11 19:47
调试输出 (时间_到时间戳 (到时间 (“1825年8月11日19时1分35秒”), 真, ))'得到:-261556208     时间戳 ...

时间戳,是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数(不考虑闰秒),用于表示一个时间点。
1825年,在什么情况会用到?基本没有啊.尤其还是还要取1825年的时间间隔,那基本才没有这种场景.
回复

使用道具 举报

结帖率:62% (8/13)

签到天数: 2 天

 楼主| 发表于 2025-8-11 23:30:05 | 显示全部楼层   福建省泉州市
阿杰大大 发表于 2025-8-11 22:14
时间戳,是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数(不考虑闰秒),用于表示一个时间点。
1825 ...

我没1825年场景的需求,而是我传的变量是动态的 它有时候会出错得到负数导致我的业务执行失败,所以我需要排除一下,遇到的场景有:1. 当 时间1/时间2 变量 未赋值时默认[1899年12月30日] 因低于1970年1月1日变成负数  2. 授权软件999年 取授权间隔时间(#秒)因超过100年 变成负数   3.  时间1<时间2  取时间间隔 (时间1, 时间2, 取间隔部分) 变成负数  4. 到时间 (“2025年01月29日 13时33分16秒”)=[100年1月1日]     取时间间隔 (时间1, [100年1月1日], 取间隔部分) 变成负数      其它未知场景 :。。。     最重要的是你怕跑题了,我帖子的问题的  取时间间隔()时间1 减去 时间2 得到的是整数会溢出,如何返回长整数或者文本型 是你说的转时间戳再计算 但时间戳反而受限1970年1月1日 只能计算2025-1970=55年 还比不上原本的 取时间间隔()可以计算100年

点评

因为你用别的也有时间范围问题.所以只能用时间戳来处理.这是最好的处理方式.他不管什么数据都有一个数据范围.如果说没有这种情况,那你可以判断他如果低于多少时间则按照什么来处理.   河北省唐山市   详情 回复 发表于 2025-8-12 00:01
回复

使用道具 举报

结帖率:93% (26/28)

签到天数: 7 天

发表于 2025-8-12 00:01:44 | 显示全部楼层   河北省唐山市
千狐 发表于 2025-8-11 23:30
我没1825年场景的需求,而是我传的变量是动态的 它有时候会出错得到负数导致我的业务执行失败,所以我需 ...

因为你用别的也有时间范围问题.所以只能用时间戳来处理.这是最好的处理方式.他不管什么数据都有一个数据范围.如果说没有这种情况,那你可以判断他如果低于多少时间则按照什么来处理.
回复

使用道具 举报

签到天数: 6 天

发表于 2025-8-12 08:17:58 | 显示全部楼层   山东省滨州市
千狐 发表于 2025-8-11 19:21
不太行吧,某些修仙文游 元婴修炼几亿年都超出整数9位数溢出了

这种他也不是用日期存的啊
回复

使用道具 举报

结帖率:62% (8/13)

签到天数: 2 天

 楼主| 发表于 2025-8-12 15:25:20 | 显示全部楼层   福建省泉州市
阿杰大大 发表于 2025-8-12 00:01
因为你用别的也有时间范围问题.所以只能用时间戳来处理.这是最好的处理方式.他不管什么数据都有一个数据 ...

举个简单例子: 1. 比如问大明1760年离现在时间间隔多少?   2.授权某个APP用户永久会员时间加999年,取时间间隔 判断授权是否到期  3.就是上面传入的各种错误时间变量  这些都会导致整数型溢出 我的诉求是:怎么让 时间取间隔()返回支持19位是长整数或者100位的文本型  #秒 最多只能取到100年以内 如果转时间戳的话受到时间(1970)的影响反而只能取到50年以内才不会溢出
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

关闭

精易论坛 - 有你更精彩上一条 /2 下一条

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表