⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_36246.htm

📁 vc
💻 HTM
字号:
<p>
序号:36246 发表者:圆锥曲线 发表日期:2003-04-13 17:13:33
<br>主题:Date Time Picker控件,怎么设置时间小于8:00:00时就出错?
<br>内容:我在对话框中加入了一个Date Time Picker控件,设置为time格式。当用户点击"OK"后,我用“UpdateData(TRUE);”去交换数据。我发现当设置的时间大于8:00:00时,程序运行正常,小于其时,出现assert的错误。它真让我郁闷,都调试了半天了。也没有解决,请大家帮忙。不胜感激!<BR><BR>我发现若去掉“UpdateData(TRUE);”就不会出现assert对话框。<BR>顺便说一句,程序目的是定时提醒,将上述控件得到的时间存入m_time,然后在OnTimer()中,用<BR>{<BR>CTime tCurTime=GetCurrentTime();<BR>if(tCurTime.GetHour()==m_time.GetHour()){MessageBox("sdagjasgkjsl");}<BR>}不知这些会不会对大家帮我找出错误有所帮助。<BR>谢谢大家!!!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:黄飚 回复日期:2003-04-13 17:52:37
<br>内容:<BR>CTime::CTime(int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec,<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nDST)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;struct tm atm;<BR>&nbsp;&nbsp;&nbsp;&nbsp;atm.tm_sec = nSec;<BR>&nbsp;&nbsp;&nbsp;&nbsp;atm.tm_min = nMin;<BR>&nbsp;&nbsp;&nbsp;&nbsp;atm.tm_hour = nHour;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ASSERT(nDay &gt;= 1 &amp;&amp; nDay &lt;= 31);<BR>&nbsp;&nbsp;&nbsp;&nbsp;atm.tm_mday = nDay;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ASSERT(nMonth &gt;= 1 &amp;&amp; nMonth &lt;= 12);<BR>&nbsp;&nbsp;&nbsp;&nbsp;atm.tm_mon = nMonth - 1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// tm_mon is 0 based<BR>&nbsp;&nbsp;&nbsp;&nbsp;ASSERT(nYear &gt;= 1900);<BR>&nbsp;&nbsp;&nbsp;&nbsp;atm.tm_year = nYear - 1900;&nbsp;&nbsp;&nbsp;&nbsp; // tm_year is 1900 based<BR>&nbsp;&nbsp;&nbsp;&nbsp;atm.tm_isdst = nDST;<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_time = mktime(&amp;atm);<BR>&nbsp;&nbsp;&nbsp;&nbsp;ASSERT(m_time != -1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // indicates an illegal input time<BR>}<BR>错误出现在mktime里,滩出ASSERT估计是微软的一个bug,mktime的问题,解决办法<BR>建议你用&nbsp;&nbsp;&nbsp;&nbsp;CDateTimeCtrl&nbsp;&nbsp;&nbsp;&nbsp;m_timeCtrl;而不是用CTime m_time绑定控件<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_timeCtrl.GetTime(&amp;m_time)汇报这个问题
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:小年 回复日期:2003-04-13 20:42:15
<br>内容:time_t mktime( struct tm *timeptr );<BR><BR>mktime returns the specified calendar time encoded as a value of type time_t. If timeptr references a date before midnight, January 1, 1970, or if the calendar time cannot be represented, the function returns –1 cast to type time_t.<BR><BR>而Date Time Picker控件缺省时间为1970-1-1 8:00:00,所以你小于8:00:00时就会出现assert对话框
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:小年 回复日期:2003-04-13 20:48:18
<br>内容:可以在构造函数中将m_time = 0;改为m_time = CTime(2003,1,1,12,0,0);或直接m_time = GetCurrentTime();
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -