local str1 = "12:36:28"
local str2 = "14:38:45"
local h1,m1,s1 = stringmatch(str1,"(%d+):(%d+):(%d+)")
local h2,m2,s2 = stringmatch(str2,"(%d+):(%d+):(%d+)")
local time1 = h1 3600 + m1 60 + s1
local time2 = h2 3600 + m2 60 + s2
print(time2 - time1)
得出的是 相差多少秒 除3600就是多少小时啦比如:
Do While true
小时 = Hour(Now)
分钟 = Minute(Now)
If 小时 = 9 and 分钟 = 30 Then
Exit Do
End If
delay 5000
loop
把时间改成每个你要的就行,一开始就启动脚本,不到指定时间命令会不停循环,到了时间则会执行语句。
按键精灵定时启动脚本 *** 作如下:
1、打开键盘向导,单击新脚本,会d出一个空白的脚本屏幕。
2、 接下来,单击 control 命令按钮以创建表达式为 true 的循环命令。
3、 接下来,单击源文件,在表达式后面创建两个变量“ hour”和“ capacity minute” ,并在表达式后面使用实时语句。
4、判断语句,如果小时(你想设置什么时间) ,分钟(你想设置什么时间)。
5 加入循环陈述和结束判断陈述。 打开普通接口,将循环语句的结尾移动到结尾,计时脚本就完成了。
6、打开普通接口,将循环语句的结尾移动到结尾,计时脚本就完成了。
这还不简单 do 当前分钟=Minute(TIME) 当前小时 = Hour(TIME) 当前分钟=CInt(当前分钟) 当前小时 =CInt(当前小时) If 当前小时 = 8 and 当前分钟 > 0 Then //你要启动的脚本内容填进来 End If If 当前小时 = 8 and 当前分钟 >= 30 Then Exit Do End If loop 你再稍加修改下就行了,然后启动这个脚本 不关机 如果不到8点的话他是不会运行你的脚本的,到达时间自动运行你脚本的内容 超过8点30分 结束脚本。 其他小方面自己改,这个时间读取的是你的本地时间非网络时间,所以要保证你的本地时间跟现实时间误差不大先来说一下,你想要的效果其实不是脚本每天8点自动运行,而是脚本一直是运行的,只是每天8点开始做有效的运行工作,其他时间点一直处于“待命状态”。
如果你认同我上面所说的内容,那么就继续往下看吧。
解决这个问题有两种方法:
第一种:先计算你脚本有效的运行时间,比如1个小时,那么剩下的“待命状态”的时间就是23个小时,换句话说就是你的脚本执行完一次以后,要等待23个小时,在按键精灵里等待时间的命令就是delay,不过要换算,因为它的单位毫秒,你要把23小时等于多少毫秒算出来,建议用计算器算一下。
这种方法有一个缺点,就是你必须要在8点执行首次 *** 作,它是24小时完成一个运行周期,并不会真的在8点执行,而是每天在某一个固定的时间执行,这个时间点取决于你首次运行的开始时间。
第二种方法:
原理是获取当前系统时间,然后判断获取的时间是不是8点,如果是8点就开始执行有效脚本,如果不是8点,那么重新获取系统时间,再次判断,这个过程重复进行,直到8点为止。
缺点是脚本比较累一直在做判断,优点是能够精准判断。
代码如下:
Do
Dim t
t = Now()
TracePrint t
Dim r
r = UTF8Right(t, 13)
TracePrint r
Dim l
l = UTF8Left(r, 5)
TracePrint l
If l = "08:00" Then
TracePrint "调试成功,用你的脚本替换本行"
Exit Do
Elseif l = "08:01" Then
TracePrint "调试成功,用你的脚本替换本行"
Exit Do
Else
TracePrint "调试失败"
End If
Delay 60000
Loop
稍微解释一下,
为了看着方便,变量我没有合并,
由于7个“星期”的英文所写长度不一样,所以导致日期的长度也是不一样的,那么在获取8点的方法上,我选择了从后往前找的办法。
在判断的时候为了防止脚本由于卡顿错过了8点而无法有效运行,所以追加了一个判断,就是在8点01分也是可以执行脚本。当然这是在8点没有开始脚本,如果开始了,就不会在继续判断8点01分了。
如果有啥问题可以追问,或者关注我的公众号:3分钟学堂。
这个代码我在自己电脑上做了测试,附上一个我运行的截图:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)