UpdateData();
if(m_strTheme =="")
{
MessageBox("请输入会议主题!","系统提示",MB_ICONWARNING);
return;
}
if(m_tmDate<CTime::GetCurrentTime())    {
MessageBox("输入的日期过期,请重新输入!","系统提示",MB_ICONWARNING);
m_ctrDate.SetFocus();
return;

if(m_tmDate==CTime::GetCurrentTime())
{
if(m_tmTime<CTime::GetCurrentTime());
MessageBox("输入时间过期,请重新输入!","系统提示",MB_ICONWARNING);
m_ctrTime.SetFocus();
return;
}
为什么我输入今天的日期,结果还是说日期过期呢???红色代码里写的是小于号吗??

解决方案 »

  1.   

    GetCurrentTime返回的是当前系统的时间那么你输入日期是无法比较的,所以就是返回FALSE,就会时间过期了。
      

  2.   

    我想你的m_tmDate是一个字符串变量吧?应该估计得没错是一个CEdit里面的CString类型的成员变量,一个字符串不能和CTime::GetCurrentTime()比较,任何时间也都不能和CTime::GetCurrentTime()比较,结果一定是一个负值,更何况你的比较的数据类型还不同了。如果你的m_tmDate中存放的时间字符串格式是2009-3-4这样的话,你可以这么转换再比较:CTime tm=CTime::GetCurrentTime();
    CString str=tm.Format("%Y-%m-%d");最后用m_tmDate和str比。
      

  3.   

    没啊我的m_tmDate是一个CTime变量啊
      

  4.   

    那也不好比较,你按我说的,转成字符串比较。而且你输入2009年03月15日时间格式可能也不对。按我说的,都转成字符串比较。或者,你可以把年,月,日,时,分,秒都分离出来,int进行比较不是很方便嘛
      

  5.   


    对不起,看错了,这样比较才能实现吧?
    CTime t1;
    t1=CTime::GetCurrentTime();
    if(m_tmTime<t1)
    ......另外CTime有获取日期的函数,如GetYear() GetMonth(),
    GetCurrentTime()是获取时间的。