|
一直有个不好的习惯,UDF里面的函数一般都直接拿来使用,从来懒的去review一下里面的代码,总觉得既然能收录进UDF肯定是经过大量实际使用的。
好了,今天的情况是我写了一个程序,希望23:59:55自动执行一些任务,操作的时候需要处理对方一个类似客户端的程序,里面有服务器的实时时间显示,为了让时间更加精准,我实时从对方的客户端中获取时间,然后通过_SetTime函数同步到本地,if判断语句中通过判断 @houe @min @sec 的值来决定什么时候执行程序,结果意外发生了,23:59:00的时候程序竟然自动执行了,我查看日志,这个时间点电脑的时间竟然是被同步成了 23:59:59,查了N多问题,终于发现问题发生在_SetTime里面:
DllStructSetData($tSystemTime, 5, $iHour)
DllStructSetData($tSystemTime, 6, $iMinute)
If $iSecond > 0 Then DllStructSetData($tSystemTime, 7, $iSecond)
上面是_SetTime函数的代码,如果秒是00,竟然不做处理,我fuck。。。。
也就是说上一秒把本地时间同步成了 23:58:59,当客户端的时间显示 23:59:00的时候,本来也希望将本地时间通过_SetTime函数同步成23:59:00,结果_SetTime函数不处理00秒,只把小时和分钟设置到系统时间,就变成了悲剧的 23:59:59,导致程序自动运行了。。。
哎。。。写这个出来提醒下大家这里有个坑。。。 |
|