常用的时间命令有: Time, TickCount, DateTime.Format 

获取当前时间


 

命令名称 Time
命令功能 得到当前系统时间
命令参数
返回值 返回值为数值类型,表示当前系统从1970年1月1日至今所经过的秒数


需要注意的是, 这个命令并不是直接返回出当前系统所直观显示的时间, 而是系统从1970年1月1日至今所经过的秒数, 所以得出的值是不能直接用的, 需要使用DateTime插件来转换成所需要的时间格式
范例:

  1. Dim t = time()
  2. TracePrint “当前分钟数为: ” & DateTime.Minute(t)
  3. TracePrint “当前年份是: ” & DateTime.year(t)
  4. TracePrint “当前月份是: ” & DateTime.month(t)

复制代码

DateTime.Minute\DateTime.year\DateTime.month 这些命令是用来把从time()命令里返回的时间转换成指定的时间的命令, 相关的命令还有用来转换成小时\秒数\星期等等, 具体的命令这里就不过多的一一介绍了, 大家可以直接参考下按键的命令帮助文档, 里面有详细的范例

按照指定格式获取时间



这里再单独介绍一个自定义比较强的时间函数, 这个命令可以按照你要求的格式来返回一个时间给你

命令名称 DateTime.Format
命令功能 按照指定格式输出时间
命令参数 fmt:分别用%Y, %m, %d, %H, %M, %S代表年,月,日,时,分,秒
如果不填格式,默认格式为%Y-%m-%d %H:%M:%S
t:为可选参数,可以填写Time()得到的时间。如果不填,则取当前时间
返回值 返回根据指定的格式生成的时间


这个命令可以指定时间按照第一个参数设定的格式来生成你想要的时间, 范例:

  1. // 生成时间: 年-月-日
  2. Traceprint DateTime.Format(“%Y-%m-%d”)
  3. // 生成时间: 年/月/日
  4. Traceprint DateTime.Format(“%Y/%m/%d”)
  5. // 生成时间: 年/月/日 时:分:秒
  6. Traceprint DateTime.Format(“%Y/%m/%d %H:%M:%S”)
  7. // 生成时间: xxxx年xx月xx日
  8. TracePrint DateTime.Format(“%Y年%m月%d日”)

复制代码

这个命令就是把%Y %m之类的特殊符号当成是指定的年月等时间, 然后其他的就按照原来的字符不变进行返回

计算时间差的方法



上面介绍了如何获取系统时间, 那在具体的使用中还需要涉及到定时进行任务, 或者定时循环找图, 超时后退出这样的功能, 这种功能就需要通过TickCount 命令来配合使用了

命令名称 TickCount
命令功能 获取当前脚本运行时间,单位毫秒
命令参数
返回值 返回值为数值类型,脚本运行的时间


使用TickCount 命令来计算时间差

  1. Dim t = TickCount()
  2. For 100
  3. If CmpColorEx(“300|500|FFFFFF|123456-102030,305|505|FFFFFF”,0.9) = 1 Then
  4. End If
  5. Next
  6. TracePrint “使用多点找色100次, 消耗时间是: ” & TickCount()-t

复制代码

利用TickCount 可以精确毫秒的特性, 我们可以用来检测代码运行的时长
实现定时功能

  1. Dim t = TickCount()
  2. Do
  3. If TickCount() – t > 5000 Then
  4. TracePrint “循环时间超过5秒,退出循环”
  5. Exit Do
  6. Else
  7. TracePrint “循环中…”
  8. End If
  9. Loop

复制代码

根据上面的方法, 我们可以进一步应用到找色中, 来实现一个在指定时间内循环等色的操作

  1. Call 循环多点比色(“300|500|FFFFFF|123456-102030,305|505|FFFFFF”,5)
  2. Function 循环多点比色(mycolor, t)
  3. Dim t1 = TickCount()
  4. Do
  5. If CmpColorEx(mycolor, 0.9) = 1 Then
  6. TracePrint “找到特征啦”
  7. Exit Do
  8. End If
  9. If TickCount() – t1 > t*1000 Then
  10. TracePrint “等待5秒未找到, 退出循环”
  11. Exit Do
  12. End If
  13. Delay 200
  14. Loop
  15. End Function

复制代码

 

声明:
本站所有文章,如无特殊说明或标注,均为本站原创发布。
任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。