我要检查,如果系统时间为特定值。如果时间是早上11:15,或者如果时间晚于上午11:00,我可以使用。如何比较两个不同的时间值
我试图用
CTime CurrentTime = CTime::GetCurrentTime();
但无法弄清楚如何进行比较。
感谢
我要检查,如果系统时间为特定值。如果时间是早上11:15,或者如果时间晚于上午11:00,我可以使用。如何比较两个不同的时间值
我试图用
CTime CurrentTime = CTime::GetCurrentTime();
但无法弄清楚如何进行比较。
感谢
使用一个额外的CTime对象(Here):
CTime CurrentTime=CTime::GetCurrentTime();
if(CurrentTime==CTime(2013,11,1,20,15,00))
{
// Do that...
Sleep(0);
}
但它始终是更安全的进行比较的时间跨度:
if((CurrentTime>CTime(2013,11,1,20,15,00))&&(CurrentTime<CTime(2013,11,1,20,15,05)))
{
// Do that...
Sleep(0);
}
在这种情况下,我参加了一个跨度5秒。通常情况下,你永远不会碰到确切的时间,所以第二个例子更安全。
而且至少,回答你的问题,如果你想知道它的过去11
if(CurrentTime>CTime(CurrentTime.GetYear(),CurrentTime.GetMonth(),CurrentTime.GetDay(),11,00,00))
{
// Uhh yeah, past 11:00
}
不一定是一个跨度,但是那个时候到那个时间之前的事件。即使你有1秒的“epsilon”,仍然有机会在这段时间内处理掉处理器(例如等待软盘上的I/O操作)。没有“epsilon”值保证足够大,因此只需检测从“之前”标记到“之后”的转换。 – franji1
谢谢@Martin,是这种24小时格式还是应该单独检查am/pm? – user2937812
@ franji1你是完全正确的,我添加了一个样本。我试图贴近问题。 –
我喜欢的COleDateTime。时间表示为双倍。 完整的数字代表了自那以来的日子。分数代表了一天的时间,所以0.5北京时间中午0.75是下午6点...
便于计算和易于比较。还有一个COleDateTimeSpan辅助类。
的CTime具有比较运营商。 http://msdn.microsoft.com/en-us/library/fww7f4h3%28v=vs.90%29.aspx – drescherjm
@drescherjm感谢,我看到了,但我怎么能解释,如果时间是上午11点?那么我想我可以比较当前时间和上午11点。 – user2937812