结构:
CTime( int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec, int nDST = -1
//参数nDST指定是否实行夏令时,为0时表示实行标准时间,为正数时表示实行夏令时,为负数时由系统自动计算实行的是标准时间还是夏令时。 );
===================================================================== C++中,CTime 与 CString转换 CTime m_StartTime1 = CTime::GetCurrentTime(); CString csStartTime = m_StartTime1.Format( "%Y%m%d%H%M%S" ); 一.将CString转为CTime的几种方法 CString timestr = "2000年04月05日"; int a,b,c ; sscanf(timestr.GetBuffer(timestr.GetLength()),"%d年%d月%d日",&a,&b,&c); CTime time(a,b,c,0,0,0); --------or - --------------------- CString s("2001-8-29 19:06:23"); int nYear, nMonth, nDate, nHour, nMin, nSec; sscanf(s, "%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec); CTime t(nYear, nMonth, nDate, nHour, nMin, nSec); ---- or ------------------------ CString timestr = "2000年04月05日"; int year,month,day; BYTE tt[5]; //get year memset(tt, 0, sizeof(tt)); tt[0] = timestr[0]; tt[1] = timestr[1]; tt[2] = timestr[2]; tt[3] = timestr[3]; year= atoi((char *)tt); //get month memset(tt, 0, sizeof(tt)); tt[0] = timestr[6]; tt[1] = timestr[7]; month = atoi((char *)tt); //get day memset(tt, 0, sizeof(tt)); tt[0] = timestr[10]; tt[1] = timestr[11]; CTime time(year,month,day,0,0,0); 从上面来看,很明显使用sscanf()函数的优势. 二.将CTime转换为CString的方法: CTime tmSCan = CTime::GetCurrentTime(); CString szTime = tmScan.Format("'%Y-%m-%d %H:%M:%S'"); 这样得到的 日期 时间字符串就是以"2006-11-27 23:30:59"的格式. //取得CTime中的日期 CString cstrDate = tmScan.Format("%Y-%m-%d"); //取得CTime中的时间 CString cstrTime = tmScan.Format("%H:%M-%S"); sprintf还有个不错的表妹:strftime,专门用于格式化时间字符串的,用法跟她表哥很像,也是一大堆格式控制符,只是毕竟小姑娘家心细,她还要调用者指定缓冲区的最大长度,可能是为了在出现问题时可以推卸责任吧。这里举个例子: 更多更好的sprintf()函数说明参考:《spirntf,你知道多少?》 time_t t = time(0); //产生"YYYY-MM-DD hh:mm:ss"格式的字符串。 char s[32]; strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", localtime(&t)); sprintf在MFC中也能找到他的知音:CString::Format,strftime在MFC中自然也有她的同道:CTime::Format,这一对由于从 面向对象 哪里得到了赞助,用以写出的代码更觉优雅
=====================================================================
获取时间及时间参数方法:
static CTime WINAPI GetCurrentTime( ); 获取系统当前日期和时间。返回表示当前日期和时间的CTime对象。
CString Format(LPCTSTR pszFormat) const; 将CTime对象中的时间信息格式化为字符串。参数pszFormat是格式化字符串,与printf中的格式化字符串类似,格式化字符串中带有%前缀的格式码将会被相应的CTime时间分量代替,而其他字符会原封不动的拷贝到返回字符串中。格式码及含义如下: %a:周的英文缩写形式。 %A:周的英文全名形式。 %b: 月的英文缩写形式。 %B:月的英文全名形式。 %c: 完整的日期和时间。 %d:十进制形式的日期(01-31)。 %H:24小时制的小时(00-23)。 %I: 12小时制的小时(00-11)。 %j: 十进制表示的一年中的第几天(001-366)。 %m: 月的十进制表示(01-12)。 %M:十进制表示的分钟(00-59)。 %p: 12小时制的上下午标示(AM/PM)。 %S: 十进制表示的秒(00-59)。 %U: 一年中的第几个星期(00-51),星期日是一周的第一天。 %W: 一年中的第几个星期(00-51),星期一是一周的第一天。 %w: 十进制表示的星期几(0-6)。 %Y: 十进制表示的年。
CTime(const SYSTEMTIME& st,int nDST = - 1) ; 以一个SYSTEMTIME结构体变量来构造CTime对象。SYSTEMTIME结构体也是我们对日期时间的常用表示方式。参数st为以本地时间表示的SYSTEMTIME对象,参数nDST同上。 int GetYear( ) const; 获取CTime对象表示时间的年份。范围从1970年1月1日到2038年(包括2038年)1月18日。 int GetMonth( ) const; 获取CTime对象表示时间的月份。范围为1到12。 int GetDay( ) const; 获取CTime对象表示时间的日期。范围为1到31。 int GetHour( ) const; 获取CTime对象表示时间的小时。范围为0到23。 int GetMinute( ) const; 获取CTime对象表示时间的分钟。范围为0到59。 int GetSecond( ) const; 获取CTime对象表示时间的秒。范围为0到59。 int GetDayOfWeek( ) const; 此函数的返回值表示CTime对象代表的是星期几,1表示是周日,2表示是周一,以此类推。
操作与比较:
CTime operator +(CTimeSpan timeSpan) const; 将CTime对象和CTimeSpan对象相加,返回一个CTime对象。实际意义就是在一个时间的基础上推后一个时间间隔,得到一个新的时间。 CTime operator -(CTimeSpan timeSpan) const; 将CTime对象和一个CTimeSpan相减,返回一个CTime对象。实际意义就是在一个时间的基础上提前一个时间间隔,得到一个新的时间。 CTimeSpan operator -(CTime time) const; 将该CTime对象和另一个CTime对象相减,返回一个CTimeSpan对象。实际意义就是计算两个时间点的间隔,得到一个CTimeSpan对象。 CTime& operator +=(CTimeSpan span); 为该CTime对象增加一个span表示的时间间隔。 CTime& operator -=(CTimeSpan span); 为该CTime对象减去一个span表示的时间间隔。 CTime& operator =(__time64_t time); 为该CTime对象赋予一个新的时间值。 简单说下剩下的几个重载i运算符: operator == : 比较两个绝对时间是否相等。 operator != : 比较两个绝对时间是否不相等。 operator > : 比较两个绝对时间,是否前一个大于后一个。 operator < : 比较两个绝对时间,是否前一个小于后一个。 operator >= : 比较两个绝对时间,是否前一个大于等于后一个。 operator <= : 比较两个绝对时间,是否前一个小于等于后一个
CTime( int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec, int nDST = -1
//参数nDST指定是否实行夏令时,为0时表示实行标准时间,为正数时表示实行夏令时,为负数时由系统自动计算实行的是标准时间还是夏令时。 );
===================================================================== C++中,CTime 与 CString转换 CTime m_StartTime1 = CTime::GetCurrentTime(); CString csStartTime = m_StartTime1.Format( "%Y%m%d%H%M%S" ); 一.将CString转为CTime的几种方法 CString timestr = "2000年04月05日"; int a,b,c ; sscanf(timestr.GetBuffer(timestr.GetLength()),"%d年%d月%d日",&a,&b,&c); CTime time(a,b,c,0,0,0); --------or - --------------------- CString s("2001-8-29 19:06:23"); int nYear, nMonth, nDate, nHour, nMin, nSec; sscanf(s, "%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec); CTime t(nYear, nMonth, nDate, nHour, nMin, nSec); ---- or ------------------------ CString timestr = "2000年04月05日"; int year,month,day; BYTE tt[5]; //get year memset(tt, 0, sizeof(tt)); tt[0] = timestr[0]; tt[1] = timestr[1]; tt[2] = timestr[2]; tt[3] = timestr[3]; year= atoi((char *)tt); //get month memset(tt, 0, sizeof(tt)); tt[0] = timestr[6]; tt[1] = timestr[7]; month = atoi((char *)tt); //get day memset(tt, 0, sizeof(tt)); tt[0] = timestr[10]; tt[1] = timestr[11]; CTime time(year,month,day,0,0,0); 从上面来看,很明显使用sscanf()函数的优势. 二.将CTime转换为CString的方法: CTime tmSCan = CTime::GetCurrentTime(); CString szTime = tmScan.Format("'%Y-%m-%d %H:%M:%S'"); 这样得到的 日期 时间字符串就是以"2006-11-27 23:30:59"的格式. //取得CTime中的日期 CString cstrDate = tmScan.Format("%Y-%m-%d"); //取得CTime中的时间 CString cstrTime = tmScan.Format("%H:%M-%S"); sprintf还有个不错的表妹:strftime,专门用于格式化时间字符串的,用法跟她表哥很像,也是一大堆格式控制符,只是毕竟小姑娘家心细,她还要调用者指定缓冲区的最大长度,可能是为了在出现问题时可以推卸责任吧。这里举个例子: 更多更好的sprintf()函数说明参考:《spirntf,你知道多少?》 time_t t = time(0); //产生"YYYY-MM-DD hh:mm:ss"格式的字符串。 char s[32]; strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", localtime(&t)); sprintf在MFC中也能找到他的知音:CString::Format,strftime在MFC中自然也有她的同道:CTime::Format,这一对由于从 面向对象 哪里得到了赞助,用以写出的代码更觉优雅
=====================================================================
获取时间及时间参数方法:
static CTime WINAPI GetCurrentTime( ); 获取系统当前日期和时间。返回表示当前日期和时间的CTime对象。
CString Format(LPCTSTR pszFormat) const; 将CTime对象中的时间信息格式化为字符串。参数pszFormat是格式化字符串,与printf中的格式化字符串类似,格式化字符串中带有%前缀的格式码将会被相应的CTime时间分量代替,而其他字符会原封不动的拷贝到返回字符串中。格式码及含义如下: %a:周的英文缩写形式。 %A:周的英文全名形式。 %b: 月的英文缩写形式。 %B:月的英文全名形式。 %c: 完整的日期和时间。 %d:十进制形式的日期(01-31)。 %H:24小时制的小时(00-23)。 %I: 12小时制的小时(00-11)。 %j: 十进制表示的一年中的第几天(001-366)。 %m: 月的十进制表示(01-12)。 %M:十进制表示的分钟(00-59)。 %p: 12小时制的上下午标示(AM/PM)。 %S: 十进制表示的秒(00-59)。 %U: 一年中的第几个星期(00-51),星期日是一周的第一天。 %W: 一年中的第几个星期(00-51),星期一是一周的第一天。 %w: 十进制表示的星期几(0-6)。 %Y: 十进制表示的年。
CTime(const SYSTEMTIME& st,int nDST = - 1) ; 以一个SYSTEMTIME结构体变量来构造CTime对象。SYSTEMTIME结构体也是我们对日期时间的常用表示方式。参数st为以本地时间表示的SYSTEMTIME对象,参数nDST同上。 int GetYear( ) const; 获取CTime对象表示时间的年份。范围从1970年1月1日到2038年(包括2038年)1月18日。 int GetMonth( ) const; 获取CTime对象表示时间的月份。范围为1到12。 int GetDay( ) const; 获取CTime对象表示时间的日期。范围为1到31。 int GetHour( ) const; 获取CTime对象表示时间的小时。范围为0到23。 int GetMinute( ) const; 获取CTime对象表示时间的分钟。范围为0到59。 int GetSecond( ) const; 获取CTime对象表示时间的秒。范围为0到59。 int GetDayOfWeek( ) const; 此函数的返回值表示CTime对象代表的是星期几,1表示是周日,2表示是周一,以此类推。
操作与比较:
CTime operator +(CTimeSpan timeSpan) const; 将CTime对象和CTimeSpan对象相加,返回一个CTime对象。实际意义就是在一个时间的基础上推后一个时间间隔,得到一个新的时间。 CTime operator -(CTimeSpan timeSpan) const; 将CTime对象和一个CTimeSpan相减,返回一个CTime对象。实际意义就是在一个时间的基础上提前一个时间间隔,得到一个新的时间。 CTimeSpan operator -(CTime time) const; 将该CTime对象和另一个CTime对象相减,返回一个CTimeSpan对象。实际意义就是计算两个时间点的间隔,得到一个CTimeSpan对象。 CTime& operator +=(CTimeSpan span); 为该CTime对象增加一个span表示的时间间隔。 CTime& operator -=(CTimeSpan span); 为该CTime对象减去一个span表示的时间间隔。 CTime& operator =(__time64_t time); 为该CTime对象赋予一个新的时间值。 简单说下剩下的几个重载i运算符: operator == : 比较两个绝对时间是否相等。 operator != : 比较两个绝对时间是否不相等。 operator > : 比较两个绝对时间,是否前一个大于后一个。 operator < : 比较两个绝对时间,是否前一个小于后一个。 operator >= : 比较两个绝对时间,是否前一个大于等于后一个。 operator <= : 比较两个绝对时间,是否前一个小于等于后一个