C言語 - VC COleDateTime - 1日前の日付を取得する
- 1. 概要
- 2. 現在日時を取得する
- 3. 1日前の日付を取得する
1. 概要
ちょっとプログラムをかじった人にはわかる話なのですが。
日付や時刻というのは結構に面倒なものなのです。
2月を例に出すまでもなく、月末には30日と31日の月があるので、○月1日の1日前は何月何日なのというのは単純な引き算ではできないのです。
1月1日の1日前だと年まで変更する必要があります。
そのあたりはいろんな言語で、対応するライブラリなりクラスなりが用意されています。
VC の場合は COleDateTime というクラスが用意されています。
COleDateTime クラスは絶対的な時刻を表現するクラスで、それに対して相対的な時間を表現する COleDateTimeSpan というクラスがあります。
2. 現在日時を取得する
最終目標へ行く前にちょっと寄り道。
現在の日時を取得するには
COleDateTime Now = COleDateTime::GetCurrentTime();
GetCurrentTime はスタティックメソッドになっていて、宣言せずにそのまま使用できます。
3. 1日前の日付を取得する
有効な年月日が、int 型の y、m、d という変数に用意されているとして・・・。
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 進数 | |
|
|