MFC提供了两个日期时间类,CTime 和CTimeSpan , CTime表示的是绝对时间,即基于格林威治平均时间(GMT) , CTimeSpan则表示的是时间间隔。
下面我们来写一个获取本地时间的MFC小程序。
程序界面如上所示:
首先我们需要添加几个编辑框控件并设置其属性为不可编辑,然后并为其添加成员变量,其类型为CString
下面我们开始写获取的函数代码
void CMFCApplication3Dlg::OnBnClickedGet()
{
// TODO: 在此添加控件通知处理程序代码
//CTime t = CTime::GetCurrentTime();
CTime m_time_get;
m_time_get = CTime::GetCurrentTime();
m_time = m_time_get.Format(_T("%X"));
m_date = m_time_get.Format(_T("%x"));
m_strdatatime = m_time_get.Format(_T("%Y-%m-%d %H-%M-%S 第%w周-%A"));
UpdateData(false);
}
以上代码就完成了时间类的初始化并获取到了当前时间并输出到MFC程序中了。
在写这个程序的时候遇到一个 就是
CTime m_time_get;
m_time_get = CTime::GetCurrentTime();
首先构造了这个类,然后当我在初始化这个类的时候,为什么会得不到GetCurrentTime()函数呢?
通过查MSDN ,发现这个函数是一个静态函数,只能通过静态方法来调用
以下是官方给出的文档:
// Example for CTime::GetCurrentTime CTime t = CTime::GetCurrentTime();
2) 格式符号说明
%a —— 星期(缩写英文),如Fri;
%A —— 星期(全写英文),如Friday
%b —— 月份(缩写英文),如Oct
%B —— 月份(全写英文),如 October
%c —— 月/日/年 时:分:秒,如 10/13/06 19:17:17
%d —— 日期(1 ~ 31)
%H —— 时(24小时制)(0 ~ 23)
%I —— 时(12小时制)(0 ~ 12)
%j —— 一年当中的第几天,(1 ~ 366)
%m —— 月份(数字 1 ~ 12)
%M —— 分(0 ~ 59)
%p —— 12小时中的A M/PM指示,或者AM,或者PM
%S —— 秒(0 ~ 59)
%U —— 一年中的第几周,星期日作为每周的第一天(0 ~ 53)
%w —— 星期(数字表示,0 ~ 6,0代表星期日)
%W —— 一年中的第几周,星期一作为每周的第一天(0 ~ 53)
%x —— 月/日/年,%c的前半段
%X —— 时/分/秒,%c的后半段
%y —— 年份(不带世纪,如 06)
%Y —— 年份(带世纪,如 2006)
%z,%Z —— 时区名称或缩写,如果时区未知,此字符为空,如“中国标准时间”
%% —— %