[kaze's test] プログラミングメモ →目次

 


日付と時間(VC++)

VC++で日付と時間を管理するために、幾つかのデータ型とクラスがあります。データ型の種類によって、処理するための関数、APIもそれぞれです。互いに変換する為の関数もあります。



1.time_t データ型long型(typedef long time_t)の整数です。 システム クロックに従って、万国標準時 (UCT) の 1970 年 1 月 1 日の 00:00:00 からの経過時間を秒単位で表した数値を返します。最終日付は 2038 年 1 月 18 日です。

2.CTime クラス
time_tに基づいてのクラスです。最初日付は、マニュアル上では、1970年からですが、ディバッグ上では、1900より前の日を入れるとASSERT警告がだされてしまいますので、注意する必要があります。最終日付は 2038 年 1 月 18 日です。

3.SYSTEMTIME 構造体
typedef struct _SYSTEMTIME {
    WORD wYear;
    WORD wMonth;
    WORD wDayOfWeek;
    WORD wDay;
    WORD wHour;
    WORD wMinute;
    WORD wSecond;
    WORD wMilliseconds;
} SYSTEMTIME;

WORDで年を管理するので、範囲は広すぎて、開始日付は、 0 年 0 月 0 日です。

4.FILETIME 構造体
typedef struct _FILETIME {
    DWORD dwLowDateTime; /* 下位 32 ビット */
    DWORD dwHighDateTime; /* 上位 32 ビット */
} FILETIME, *PFILETIME, *LPFILETIME;

FILETIME 構造体は 1601 年 1 月 1 日からの 100 ナノ秒間隔の数を表す 64 ビットの値です。

5.DATE データ型

8バイト浮動小数(typedef double DATE)です。日付は 1899 年 12 月 30 日の午前零時がゼロで、1 日ごとに 1 増加します。時刻は 1.0 が 24 時間の小数です。

6.COleDateTime クラス
DATEに基づいてのクラスです。1899 年 12 月 30 日より前は、日付は 1 日さかのぼるごとに 1 減少しますが、時刻は -1.0 を 24 時間とした小数になります。次に例を示します。
西暦 100 年 1 月 1 日から、9999 年 12 月 31 日までの日時を処理します。

7.CTimeSpan クラス
日、時、分、秒で、時間の間隔を処理するクラスです。CTime クラスと一緒に使われます。

8.COleDateTimeSpan クラス
日、時、分、秒で、時間の間隔を処理するクラスです。COleDateTime クラスと一緒に使われます。