获得当前日期和时间
CTime tm=CTime::GetCurrentTime();
CString str=tm.Format("%Y-%m-%d");
在VC中,我们可以借助CTime时间类,获取系统当前日期,具体使用方法如下:
CTime t = CTime::GetCurrentTime(); //获取系统日期
int d=t.GetDay(); //获得几号
int y=t.GetYear(); //获取年份
int m=t.GetMonth(); //获取当前月份
int h=t.GetHour(); //获取当前为几时
int mm=t.GetMinute(); //获取分钟
int s=t.GetSecond(); //获取秒
int w=t.GetDayOfWeek(); //获取星期几,注意1为星期天,7为星期六
如果想计算两段时间的差值,可以使用CTimeSpan类,具体使用方法如下:
CTime t1( 1999, 3, 19, 22, 15, 0 );
CTime t = CTime::GetCurrentTime();
CTimeSpan span=t-t1; //计算当前系统时间与时间t1的间隔
int iDay=span.GetDays(); //获取这段时间间隔共有多少天
int iHour=span.GetTotalHours(); //获取总共有多少小时
int iMin=span.GetTotalMinutes();//获取总共有多少分钟
int iSec=span.GetTotalSeconds();//获取总共有多少秒
设置计时器
定义TIMER ID
#define TIMERID_JISUANFANGSHI 2
在适当的地方设置时钟,需要开始其作用的地方;
SetTimer(TIMERID_JISUANFANGSHI,200,NULL);
在不需要的时候销毁掉时钟
KillTimer(TIMERID_JISUANFANGSHI);
消息映射
void CJisuan::OnTimer(UINT nIDEvent)
{}
VC++中其实还是通过调用它自带的CTime类来完成的获取当前系统时间的,我们做一个小程序来了解这个过程吧!对话框里只有两个显示框和两个按钮,点下按钮显示当前时间。就这么一个小程序。
创建一个新的AppWizard项目,命名为shiyan,选择Dialog based;其他都选用默认属性,单击Finish完成生成应用程序的步骤。进入对话框界面以后,按下图所示布置显示框和功能按钮。
(2)设置参数
其中上面的显示文本框设为CString型,命名为m_show,ID号为IDC_show。
下面的显示文本框设为CString型,命名为m_show1,ID号为IDC_show1。
(3)编译程序
start键程序:
void CDate1Dlg::Onstart()
{
//count=0;
SetTimer(1,1000,NULL);
// TODO: Add your control notification handler code here
}
stop键程序:
void CDate1Dlg::Onstop()
{
KillTimer(1);
// TODO: Add your control notification handler code here
}
(4)增加计时器控件
View -> ClassWizard -> MessageMaps -> CUse progressDlg,加入WM_TIMER函数,编辑程序:
void CDate1Dlg::OnTimer(UINT nIDEvent)
{
if(nIDEvent==1)
{
// count++;
UpdateData(1);
CTime mtime=CTime::GetCurrentTime();//获取当前时间
char i;
CString w;
i=char (mtime.GetDayOfWeek());
//获取当前时间的天数是这个星期的第几天,这里要注意了,系统上默认的一个星期的第一天是星期日,最后一天是周六,大家千万不要搞错了。我也是试了才知道的。
switch(i)//将数字状换成字符就不会出现星期7这种情况了
{
case 2:
{w="一";break;}
case 3:
{w="二";break;}
case 4:
{w="三";break;}
case 5:
{w="四";break;}
case 6:
{w="五";break;}
case 7:
{w="六";break;}
case 1:
{w="日";break;}
}
int a,b,c,d,e,f;
a=int(mtime.GetSecond())/10;//获取当前时间的秒数
b=int(mtime.GetSecond())%10;
c=int(mtime.GetMinute())/10;//获取当前时间的分数
d=int(mtime.GetMinute())%10;
e=int(mtime.GetHour())/10;//获取当前时间的小时数
f=int(mtime.GetHour())%10;
m_show.Format("今天是%d年%d月%d日 星期%s ",mtime.GetYear(),mtime.GetMonth(),mtime.GetDay(),w);
m_show1.Format("现在时间是 %d%d:%d%d:%d%d",e,f,c,d,a,b);
}
UpdateData(0);
// TODO: Add your message handler code here and/or call default
CDialog::OnTimer(nIDEvent);
}
之后编译运行一下就行了,效果见下图:
编写了另外一个简单的获取时间方式:
- void CMy1Dlg::OnTimer(UINT nIDEvent)
- {
- // TODO: Add your message handler code here and/or call default
- if (nIDEvent==1)
- {
- CTime mtime=CTime::GetCurrentTime();
- m_strtime=mtime.Format("今天是%Y年%m月%d日 %X"); //m_strtime是和编辑框关联的string类型变量
- UpdateData(FALSE);
- }
- CDialog::OnTimer(nIDEvent);
- }
- void CMy1Dlg::OnButton1()
- {
- // TODO: Add your control notification handler code here
- SetTimer(1,1000,NULL);
- }
- void CMy1Dlg::OnButton2()
- {
- // TODO: Add your control notification handler code here
- KillTimer(1);
- }
void CMy1Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if (nIDEvent==1)
{
CTime mtime=CTime::GetCurrentTime();
m_strtime=mtime.Format("今天是%Y年%m月%d日 %X"); //m_strtime是和编辑框关联的string类型变量
UpdateData(FALSE);
}
CDialog::OnTimer(nIDEvent);
}
void CMy1Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
SetTimer(1,1000,NULL);
}
void CMy1Dlg::OnButton2()
{
// TODO: Add your control notification handler code here
KillTimer(1);
}
http://blog.csdn.net/sunxc123/article/details/7686659