精易论坛

标题: 精易模块修复:时间_取现行时间戳 时间_到时间戳 方法2 [打印本页]

作者: ArchiverX3    时间: 2023-3-16 10:13
标题: 精易模块修复:时间_取现行时间戳 时间_到时间戳 方法2


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

相对比较简单

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



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


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

就是  时间_取现行时间戳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”
判断循环尾 ()
返回 (返回值)


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

作者: bianyuan456    时间: 2023-3-16 10:21
@项目部03
作者: 猪滴寳貝哝    时间: 2023-3-16 12:55
@03
作者: wuqingg    时间: 2023-3-16 13:31
感谢分享,很给力!~
作者: wuqingg    时间: 2023-3-16 13:32
@项目部04
作者: shituo    时间: 2023-3-16 14:18
本帖最后由 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.毫秒)


作者: shituo    时间: 2023-3-16 14:19
.版本 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.毫秒)

作者: lyjdgkg    时间: 2023-3-16 18:57
搞这么复杂干什么,试试这个,结果到文本下就好了。
  
子程序名返回值类型公开备 注
取现行时间戳_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)



作者: ArchiverX3    时间: 2023-3-16 20:32
lyjdgkg 发表于 2023-3-16 18:57
搞这么复杂干什么,试试这个,结果到文本下就好了。
[e=0].版本 2

大佬就是不一样
作者: ArchiverX3    时间: 2023-3-16 20:37
shituo 发表于 2023-3-16 14:19
.版本 2

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

谢谢你 又学会一个新命令 指定时间
作者: renjianhong48we    时间: 2023-3-16 21:25
感谢分享
作者: 396384183    时间: 2023-3-17 17:02
支持开源~!感谢分享
作者: 亿万    时间: 2023-3-17 22:16
支持开源~!感谢分享
作者: renjianhong48we    时间: 2023-3-20 10:21
感谢分享
作者: 1326554131    时间: 2023-5-4 18:39
66666666666666666666666666666




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