开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 2986|回复: 16
收起左侧

[易语言纯源码] 精易模块修复:时间_取现行时间戳 时间_到时间戳 方法2

[复制链接]
发表于 2023-3-16 10:13:48 | 显示全部楼层 |阅读模式   广东省珠海市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -


凌哥 知道问题的所在 原帖 精易模块修复:L_时间_取现行时间戳、L_时间_到时间戳
但是我有不同的修复方案:

相对比较简单

首先我们要先知道问题是怎么导致的:
就是图片这里

QQ截图20230316094959.png

所以解决方案就是 只取一次时间


但是注意到原本模块内就有一个 精确的

就是  时间_取现行时间戳1

所以我们可以 2种操作

第1种:

  
子程序名返回值类型公开备 注
时间_取现行时间戳文本型 生成一个13位或者10位的现行时间戳,默认生成13位时间戳。13位:1325252169718,10位:1325252169
参数名类 型参考可空数组备 注
是否取十位时间戳逻辑型本参数为真时,将生成10位时间戳返回
变量名类 型静态数组备 注
返回值长整数型 
如果真 (是否为空 (是否取十位时间戳))
是否取十位时间戳 = 真
返回值 = 时间_取现行时间戳1 (取反 (是否取十位时间戳))
返回 (到文本 (返回值))


第2种:

引用论坛大佬的格式化时间方法

时间格式化的优化

  
子程序名返回值类型公开备 注
时间_取现行时间戳文本型 生成一个13位或者10位的现行时间戳,默认生成13位时间戳。13位:1325252169718,10位:1325252169
参数名类 型参考可空数组备 注
是否取十位时间戳逻辑型本参数为真时,将生成10位时间戳返回
变量名类 型静态数组备 注
时间b精易_时间 
返回值文本型 
毫秒数文本型 
时间a文本型 
取现行时间_日期时间型 
格式化日期文本型 
GetLocalTime (时间b)
格式化日期 = “yyyy/MM/dd HH:mm:ss”取空白文本 (50)
GetDateFormatA (0, 0, 时间b, 格式化日期, 格式化日期, 取文本长度 (格式化日期))
GetTimeFormatA (0, 0, 时间b, 格式化日期, 格式化日期, 取文本长度 (格式化日期))
取现行时间_ = 到时间 (删尾空 (格式化日期))
毫秒数 = 文本_自动补零 (到文本 (时间b.毫), 3)
时间a = 到文本 (到长整数 (取时间间隔 (取现行时间_, 到时间 (“1970-01-01 08:00:00”), #秒 )))
返回值 = 时间a + 毫秒数
' 返回值 = 选择 (是否取十位时间戳, 取文本左边 (时间a + 毫秒数, 10), 时间a + 毫秒数)
判断 (是否取十位时间戳)
返回值 = 取文本左边 (返回值, 10)
判断循环首 (取文本长度 (返回值) < 10)
返回值 = 返回值 + “0”
判断循环尾 ()
返回 (返回值)


判断循环首 (取文本长度 (返回值) < 13)
返回值 = 返回值 + “0”
判断循环尾 ()
返回 (返回值)


还剩一个 时间_到时间戳 的修复 让你们手动试试修改哦 哈哈

点评

想不通搞这么复杂干嘛看6楼吧   江西省九江市  发表于 2023-3-16 14:47

评分

参与人数 3好评 +3 精币 +9 收起 理由
pipi9 + 1 + 2 支持开源~!感谢分享
猪滴寳貝哝 + 1 + 2 感谢分享,很给力!~
maozaiba + 1 + 5 奉上小小红包希望笑纳

查看全部评分


结帖率:100% (1/1)

签到天数: 1 天

发表于 2023-5-4 18:39:48 | 显示全部楼层   海南省海口市
66666666666666666666666666666
回复 支持 反对

使用道具 举报

发表于 2023-3-20 10:21:38 | 显示全部楼层   广东省揭阳市
感谢分享
回复 支持 反对

使用道具 举报

签到天数: 14 天

发表于 2023-3-17 22:16:18 | 显示全部楼层   江苏省连云港市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:73% (8/11)

签到天数: 24 天

发表于 2023-3-17 17:02:15 | 显示全部楼层   河南省焦作市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2023-3-16 21:25:09 | 显示全部楼层   广东省揭阳市
感谢分享
回复 支持 反对

使用道具 举报

签到天数: 11 天

 楼主| 发表于 2023-3-16 20:37:28 | 显示全部楼层   广东省珠海市
shituo 发表于 2023-3-16 14:19
.版本 2

.子程序 取当前时间戳, 长整数型, 公开, 生成一个13位或者10位的现行时间戳,默认生成13位时间戳 ...

谢谢你 又学会一个新命令 指定时间
回复 支持 反对

使用道具 举报

签到天数: 11 天

 楼主| 发表于 2023-3-16 20:32:47 | 显示全部楼层   广东省珠海市
lyjdgkg 发表于 2023-3-16 18:57
搞这么复杂干什么,试试这个,结果到文本下就好了。
[e=0].版本 2

大佬就是不一样
回复 支持 反对

使用道具 举报

发表于 2023-3-16 18:57:06 | 显示全部楼层   福建省福州市
搞这么复杂干什么,试试这个,结果到文本下就好了。
  
子程序名返回值类型公开备 注
取现行时间戳_ASM长整数型 
参数名类 型参考可空数组备 注
参_秒级逻辑型真=秒级的时间戳,假=毫秒级的时间戳。默认:假
置入代码 ({ 83, 87, 86, 139, 45, 24, 0, 254, 127, 139, 29, 20, 0, 254, 127, 59, 45, 28, 0, 254, 127, 116, 4, 243, 144, 235, 232, 131, 124, 36, 20, 0, 184, 16, 39, 0, 0, 185, 128, 150, 152, 0, 15, 68, 200, 184, 104, 245, 255, 255, 190, 253, 255, 255, 255, 15, 68, 240, 184, 0, 152, 73, 207, 191, 0, 111, 239, 73, 15, 68, 248, 106, 0, 81, 85, 83, 232, 11, 0, 0, 0, 1, 248, 17, 242, 94, 95, 91, 93, 194, 8, 0, 83, 86, 139, 68, 36, 24, 11, 192, 117, 24, 139, 76, 36, 20, 139, 68, 36, 16, 51, 210, 247, 241, 139, 216, 139, 68, 36, 12, 247, 241, 139, 211, 235, 65, 139, 200, 139, 92, 36, 20, 139, 84, 36, 16, 139, 68, 36, 12, 209, 233, 209, 219, 209, 234, 209, 216, 11, 201, 117, 244, 247, 243, 139, 240, 247, 100, 36, 24, 139, 200, 139, 68, 36, 20, 247, 230, 3, 209, 114, 14, 59, 84, 36, 16, 119, 8, 114, 7, 59, 68, 36, 12, 118, 1, 78, 51, 210, 139, 198, 94, 91, 194, 16, 0 })
' 对于UNIX时间戳好像大家都有个误区,时间戳是毫秒和秒的区别,与基准时间差值的秒或毫秒多少就是多少,并不是固定的10位和13位。
' 原理是通过GetSystemTimeAsFileTime取得世界时时间戳,然后计算差值。
' 对GetSystemTimeAsFileTime的查看,它储存世界时时间戳的内存地址都是固定的,在R3下无法查出是哪写入的,推测是内核方面写入的且是映射的某个物理地址,查看了xp、win7、win2012、win10、win11系统都是如此,更多系统你可以测试下。
返回 (0)


点评

请收下我的膝盖   江西省九江市  发表于 2023-3-16 22:10
回复 支持 2 反对 0

使用道具 举报

结帖率:30% (6/20)

签到天数: 6 天

发表于 2023-3-16 14:19:24 | 显示全部楼层   江西省九江市
.版本 2

.子程序 取当前时间戳, 长整数型, 公开, 生成一个13位或者10位的现行时间戳,默认生成13位时间戳。13位:1325252169718,10位:1325252169 北京时间
.参数 十位时间戳, 逻辑型, 可空, 本参数为真时,将生成10位时间戳返回
.局部变量 time, SYSTEMTIME
.局部变量 易时间, 日期时间型

_取当前现行时间_GetLocalTime (time)
_系统时间到易时间_SystemTimeToVariantTime (time, 易时间)
' 取系统时间_NT (t)
' 到日期时间_NT (t, 欲取的时间)
' 易时间 = 指定时间 (欲取的时间.年, 欲取的时间.月, 欲取的时间.日, 欲取的时间.时, 欲取的时间.分, 欲取的时间.秒)
.判断开始 (十位时间戳)
    返回 (取时间间隔 (易时间, [1970年1月1日8时], #秒))
.默认
    返回 (取时间间隔 (易时间, [1970年1月1日8时], #秒) × 1000 + time.毫秒)
回复 支持 反对

使用道具 举报

结帖率:30% (6/20)

签到天数: 6 天

发表于 2023-3-16 14:18:53 | 显示全部楼层   江西省九江市
本帖最后由 shituo 于 2023-3-16 14:47 编辑

.版本 2

.子程序 取当前时间戳_, 整数型, 公开, 返回十位时间戳
.参数 现行时间, 日期时间型, 可空

.如果真 (是否为空 (现行时间))
    现行时间 = 取现行时间 ()
.如果真结束
返回 (取时间间隔 (现行时间, [1970年1月1日8时], #秒))

.版本 2

.子程序 取当前时间戳, 长整数型, 公开, 生成一个13位或者10位的现行时间戳,默认生成13位时间戳。13位:1325252169718,10位:1325252169 北京时间
.参数 十位时间戳, 逻辑型, 可空, 本参数为真时,将生成10位时间戳返回
.局部变量 time, SYSTEMTIME
.局部变量 易时间, 日期时间型

_取当前现行时间_GetLocalTime (time)
_系统时间到易时间_SystemTimeToVariantTime (time, 易时间)
' 取系统时间_NT (t)
' 到日期时间_NT (t, 欲取的时间)
' 易时间 = 指定时间 (欲取的时间.年, 欲取的时间.月, 欲取的时间.日, 欲取的时间.时, 欲取的时间.分, 欲取的时间.秒)
.判断开始 (十位时间戳)
    返回 (取时间间隔 (易时间, [1970年1月1日8时], #秒))
.默认
    返回 (取时间间隔 (易时间, [1970年1月1日8时], #秒) × 1000 + time.毫秒)

回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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