CTime与CTimeSpanの使い方

 MFC/ATLにはCTimeとCTimeSpanという便利なクラスが用意されています。これを使うと時間の管理や計算が柔軟にできるようになります。

 時刻というのは、時間軸上のある1点をあらわしますが、CTimeはこの時刻を保持します。CTimeが保持するのは絶対時刻です。

 これに対して、CTimeSpanは、ある時刻とある時刻の差分を保持します。すなわち相対時刻です。ある時刻とある時刻が時間軸上のどこにあっても、その差が同じであればCTimeSpanの中身は同じになります。

    

 この2つは自由に足したり引いたりできます。例えば、CTimeオブジェクトにCTimeSpanオブジェクトを足すと、差分を足したCTimeオブジェクトが返ります。また、CTimeオブジェクトからCTimeオブジェクトを引くと、2つのCTimeの差分を保持したCTimeSpanオブジェクトが返ります。


 では実際の使い方を見てみましょう。まず、現在時刻を取得するには、CTime::GetCurrentTime()を使います。この関数はstaticなのでどこからでも使えます。CTimeSpanは次のように日、時、分、秒を指定して初期化します。相対値なので、マイナスの値を指定することもできます。

 

CTime       cTime1;

CTime       cTime2(2005, 10, 4, 20, 30, 15);  // 年月日時分秒指定で初期化

CTimeSpan   cTimeSpan1(0, 1, 0, 0);           // 日、時、分、秒指定で初期化

CTimeSpan   cTimeSpan2;

 

cTime1 = CTime::GetCurrentTime();       //現在時刻

cTime1 += cTimeSpan1;                     // 1時間足す

cTimeSpan2 = cTime1 -cTime2;            // 差分をとる

 次は、年、月、日、時、分、秒、曜日を取得する方法です。それぞれ専用関数が用意されています。曜日は日:1 月:2 火:3 水:4 木:5 金:6 土:7が返ります。

CTime    cTime;

int      year,month, day, hour, min, sec, dow;


cTime = CTime::GetCurrentTime();    // 現在時刻

year  =cTime.GetYear();            // 年

month = cTime.GetMonth();           // 月

day   =cTime.GetDay();             // 日

hour  =cTime.GetHour();            // 時

min   =cTime.GetMinute();          // 分

sec   =cTime.GetSecond();          // 秒

dow   =cTime.GetDayOfWeek();       // 曜日

 時刻を"2006/10/04 20:30:15"のような文字列としてとりたいときは、CTime::Format()関数を使うと簡単にできます。

CTime    cTime;

CString  str;


cTime = CTime::GetCurrentTime();           // 現在時刻

str = cTime.Format("%Y/%m/%d%H:%M:%S");   // "YYYY/mm/ddHH:MM:SS"形式の時刻文字列を取得


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值