Ctime类如何计算时间差的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ctime类如何计算时间差的问题相关的知识,希望对你有一定的参考价值。

因为小弟不清楚Ctime类的方法,
所以请各位高手指教,
(1)请问怎样计算两个时间差,

(2) 有一个Ctime变量,存放一个日期,
如何计算经过10天(月,年)后的日期。
都怪小弟基础差,还请高手们多多指教,谢谢

CTime类有GetDay、GetHour等函数。
先用CTime time = CTime::GetCurrentTime()获取当前时间,再用time.GetDay()获得当前天数,并将这个天数保存起来(可以保存到文件、数据库或注册表中),10天后再运行程序,获取当前时间,再取以前保存的时间,前者减去后者,就是天数差了。
参考技术A 用CTime::GetTime()就行.
因为CTime::GetTime()或得的是一个long(t_time)类型的值.
是从历史上的某一天(好像是197x年的某一天)到现在的秒数.
是可以直接相减的.
比如有两个CTime类型变量.一个叫tNow,一个叫tYesterday.
那么就可以tNow.GetTime()-tYesterday.GetTime()
那得到的数为正就是前面的时间离现在近.反之同理.
参考技术B 下本MFC类库里有给你摘抄
CTime Comparison Operators

BOOL operator ==( CTime time ) const;
BOOL operator !=( CTime time ) const;
BOOL operator <( CTime time ) const;
BOOL operator >( CTime time ) const;
BOOL operator <=( CTime time ) const;
BOOL operator >=( CTime time ) const;

说明:
这些操作符比较两个绝对时间,如果测试条件为真则返回非零值;否则返回0。

示例:
// CTime比较操作符示例:
CTime t1 = CTime::GetCurrentTime();
CTime t2 = t1 + CTimeSpan( 0, 1, 0, 0 ); // 1 hour later
ASSERT( t1 != t2 );
ASSERT( t1 < t2 );
ASSERT( t1 <= t2 );

CTime::operator +, -

CTime operator +( CTimeSpan timeSpan ) const;
CTime operator - ( CTimeSpan timeSpan ) const;
CTimeSpan operator - ( CTime time ) const;

说明:
CTime对象表示绝对时间。CTimeSpan对象表示相对时间。前两个操作符允许你向或从CTime对象中加上或减去一个CTimeSpan对象。第三个操作符允许你将两个CTime对象相减产生一个CTimeSpan对象。

示例:
// CTime::operator +, - 示例:
CTime t1( 1999, 3, 19, 22, 15, 0 ); // 10:15PM March 19, 1999
CTime t2( 1999, 3, 20, 22, 15, 0 ); // 10:15PM March 20, 1999
CTimeSpan ts = t2 - t1; // Subtract 2 Ctimes
ASSERT( ts.GetTotalSeconds() == 86400L );
ASSERT( ( t1 + ts ) == t2 ); // Add a CTimeSpan to a CTime.
ASSERT( ( t2 - ts ) == t1 ); // Subtract a CTimeSpan from a CTime.

CTime::operator +=, -=

const CTime& operator +=( CTimeSpan timeSpan );
const CTime& operator -=( CTimeSpan timeSpan );

说明:
这些操作符允许你从此CTime对象中加上或减去一个CTimeSpan对象。

示例:
// CTime::operator -= 示例:
CTime t( 1999, 3, 19, 22, 15, 0 ); // 10:15PM March 19, 1999
t += CTimeSpan( 0, 1, 0, 0 ); // 1 hour exactly
ASSERT( t.GetHour() == 23 );

以上是关于Ctime类如何计算时间差的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在注册表中存储当前时间?

c++中 时间差的计算

如何将GetTickCount得到的DWORD转化为时间,毫秒级

php 计算距离天的时间还有多少天

C++中用time_t保存在文件中的时间与现在的系统时间时间差计算

猎豹MFC--DataTimePicker日期时间选择控件CDatatimeCtrl CTime CTimeSpan时间间隔