- 按键工程师
- 742060
- 2281
- 5
- 881 朵
- 10799 个
- 580 个
- 48300
- 2011-08-18
|
1#
t
T
发表于 2016-05-17 18:02
|
|只看楼主
零基础,轻松学习安卓按键,大家好,我是山海师~~~ 在上一篇教程中我们学习了字符串的一些 常用的操作, 那在今天这篇教程中我们就来学习下时间的相关处理命令.时间的处理在脚本中是应用的比较广泛的, 像是活动任务的定时处理, 定时循环等等都需要用到时间命令
| >>>>总目录贴入口<<<<
常用的时间命令有: Time, TickCount, DateTime.Format
获取当前时间
命令名称 | Time | 命令功能 | 得到当前系统时间 | 命令参数 | 无 | 返回值 | 返回值为数值类型,表示当前系统从1970年1月1日至今所经过的秒数
|
需要注意的是, 这个命令并不是直接返回出当前系统所直观显示的时间, 而是系统从1970年1月1日至今所经过的秒数, 所以得出的值是不能直接用的, 需要使用DateTime插件来转换成所需要的时间格式 范例:- Dim t = time()
- TracePrint "当前分钟数为: " & DateTime.Minute(t)
- TracePrint "当前年份是: " & DateTime.year(t)
- 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()得到的时间。如果不填,则取当前时间
| 返回值 | 返回根据指定的格式生成的时间
|
这个命令可以指定时间按照第一个参数设定的格式来生成你想要的时间, 范例:- // 生成时间: 年-月-日
- Traceprint DateTime.Format("%Y-%m-%d")
- // 生成时间: 年/月/日
- Traceprint DateTime.Format("%Y/%m/%d")
- // 生成时间: 年/月/日 时:分:秒
- Traceprint DateTime.Format("%Y/%m/%d %H:%M:%S")
- // 生成时间: xxxx年xx月xx日
- TracePrint DateTime.Format("%Y年%m月%d日")
复制代码 这个命令就是把%Y %m之类的特殊符号当成是指定的年月等时间, 然后其他的就按照原来的字符不变进行返回
计算时间差的方法
上面介绍了如何获取系统时间, 那在具体的使用中还需要涉及到定时进行任务, 或者定时循环找图, 超时后退出这样的功能, 这种功能就需要通过TickCount 命令来配合使用了
命令名称 | TickCount | 命令功能 | 获取当前脚本运行时间,单位毫秒 | 命令参数 | 无 | 返回值 | 返回值为数值类型,脚本运行的时间
|
使用TickCount 命令来计算时间差- Dim t = TickCount()
- For 100
- If CmpColorEx("300|500|FFFFFF|123456-102030,305|505|FFFFFF",0.9) = 1 Then
- End If
- Next
- TracePrint "使用多点找色100次, 消耗时间是: " & TickCount()-t
复制代码 利用TickCount 可以精确毫秒的特性, 我们可以用来检测代码运行的时长
实现定时功能- Dim t = TickCount()
- Do
- If TickCount() - t > 5000 Then
- TracePrint "循环时间超过5秒,退出循环"
- Exit Do
- Else
- TracePrint "循环中..."
- End If
- Loop
复制代码 根据上面的方法, 我们可以进一步应用到找色中, 来实现一个在指定时间内循环等色的操作- Call 循环多点比色("300|500|FFFFFF|123456-102030,305|505|FFFFFF",5)
- Function 循环多点比色(mycolor, t)
- Dim t1 = TickCount()
- Do
- If CmpColorEx(mycolor, 0.9) = 1 Then
- TracePrint "找到特征啦"
- Exit Do
- End If
- If TickCount() - t1 > t*1000 Then
- TracePrint "等待5秒未找到, 退出循环"
- Exit Do
- End If
- Delay 200
- Loop
- End Function
复制代码赠人玫瑰手有余香~~~你的一个顺手回复也许就可以让这个帖子给更多的人看到,就能帮助更多的人~~~
|