VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 3770|回复: 8

[求助] 如何高效的判断当前时间是否到了12点???

[复制链接]
83_avatar_middle
在线会员 发表于 2015-11-19 08:50:55 | 显示全部楼层 |阅读模式
3驿站币
  用定时器或者开个线程 不停的每隔1秒判断,感觉效率很低,有什么好的思路大家交流下呢?





上一篇:VC高手挑战以下,看看能不能找到原因
下一篇:网络高手指点(接上贴)3
78_avatar_middle
online_supermod 发表于 2015-11-19 09:20:22 | 显示全部楼层
可以先获取当前时间,然后计算到12点还需要多长时间,然后Sleep就行了。
83_avatar_middle
ico_lz  楼主| 发表于 2015-11-19 12:08:15 | 显示全部楼层
jpacg 发表于 2015-11-19 09:20
可以先获取当前时间,然后计算到12点还需要多长时间,然后Sleep就行了。

意思是开个线程
在线程中
while()
{
i = 12 - 当前时间;
if (i>0) seelp(i);
}

好糟糕的代码,SKY老大来指导下。
83_avatar_middle
ico_lz  楼主| 发表于 2015-11-20 12:11:05 | 显示全部楼层
SYC老大请帮忙解决下,等了一天了,。。。。。。。。。
74_avatar_middle
在线会员 发表于 2015-11-20 23:08:06 | 显示全部楼层
mofa005 发表于 2015-11-20 12:11
SYC老大请帮忙解决下,等了一天了,。。。。。。。。。

我觉得版主大人的意思是,开启一个新线程,新线程运行的时候获取当前时间到12点的差距,然后让新线程去睡觉。(相当于我们日常的闹钟设置到12点响铃),时间到了新线程就会自动被唤醒了。如果是窗口程序,别让处理消息循环的线程去睡觉了,否则他去睡觉了,没人干活了,窗口就变成没响应了。
83_avatar_middle
ico_lz  楼主| 发表于 2015-11-21 09:13:11 | 显示全部楼层
infonv 发表于 2015-11-20 23:08
我觉得版主大人的意思是,开启一个新线程,新线程运行的时候获取当前时间到12点的差距,然后让新线程去睡 ...

这方法很不好,继续等好思路。。。。
74_avatar_middle
在线会员 发表于 2015-11-21 16:04:12 | 显示全部楼层
我只知道两种方法,上面那一种和不停的获取系统时间来对比,不停的获取时间出来对比会用系统资源。
更好的方法等楼下的来补充。
74_avatar_middle
在线会员 发表于 2015-11-22 01:01:28 | 显示全部楼层
1  獲取當前 時間 t1
2  獲取12:00 時間 t2
3  獲取還差 多少時間 到 12:00  t3 = t2 - t1
4 設置 變量 b = t3 == 0
5 設置定時器 timer1 調用 週期為 t3  
  定時器 回調函數 中 設置 b= true
在定時器中 設置定時器tuner2 週期為 1 秒 回調 函數中 將b = false
6 重複步驟1
57_avatar_middle
在线会员 发表于 2015-11-27 23:24:42 | 显示全部楼层
        SYSTEMTIME m_time;   
        GetLocalTime(&m_time);   //获取当前时间
        CTime timenow(m_time.wYear,m_time.wMonth,m_time.wDay,m_time.wHour,m_time.wMinute,m_time.wSecond);  //将当前时间放进timenow
        CTime timeend(m_time.wYear,m_time.wMonth,m_time.wDay,12,0,0);   //将当天12点放进timeend
        CTimeSpan timespan;    //CTimeSpan是计算两个时间差的方法
        timespan=timeend-timenow;      //计算时间差
        int i=timespan.GetHours()*3600+timespan.GetMinutes()*60+timespan.GetSeconds();     //将时间差转换成总秒数
        Sleep(i);   

注意,可能会有毫秒的误差。获取的当前时间是比12点早的,如果要到下一天的12点需要另外加判断。这是在超级版主的启发下写得函数。要起线程。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-3-25 13:02

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表