1. C言語 - VC COleDateTime - 1日前の日付を取得する

 
1.1 概要
1.2 現在日時を取得する
1.3 1日前の日付を取得する

1.1 概要

 ちょっとプログラムをかじった人にはわかる話なのですが。  日付や時刻というのは結構に面倒なものなのです。  2月を例に出すまでもなく、月末には30日と31日の月があるので、○月1日の1日前は何月何日なのというのは単純な引き算ではできないのです。  1月1日の1日前だと年まで変更する必要があります。  そのあたりはいろんな言語で、対応するライブラリなりクラスなりが用意されています。  VC の場合は COleDateTime というクラスが用意されています。  COleDateTime クラスは絶対的な時刻を表現するクラスで、それに対して相対的な時間を表現する COleDateTimeSpan というクラスがあります。

1.2 現在日時を取得する

 最終目標へ行く前にちょっと寄り道。  現在の日時を取得するには

COleDateTime Now = COleDateTime::GetCurrentTime();
 GetCurrentTime はスタティックメソッドになっていて、宣言せずにそのまま使用できます。

1.3 1日前の日付を取得する

 有効な年月日が、int 型の ymd という変数に用意されているとして・・・。

COleDateTime OneDay = COleDateTime(y, m, d, 0, 0, 0);			//	指定日
COleDateTime Before = OneDay - COleDateTimeSpan(-1, 0, 0, 0);	//	1日前

printf("%s\n", Before.Foermat("%Y年%m月%d日"));					//	出力してみる
 ちなみに書式設定でわたしが使う主な書式は
指定 書式 備考
%d 日を示す 10 進数 (01-31)
%H (24 時間時計で) 時間を示す 10 進数 (00-23)
%M 分を示す 10 進数 (00-59)
%m 月を示す 10 進数 (01-12)
%S 秒を示す 10 進数 (00-60)
%Y 百年紀付きの年を示す 10 進数