CTime クラス
絶対日時を表します。
構文
class CTime
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CTime::CTime | さまざまな方法で CTime オブジェクトを作成します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CTime::Format | ローカル タイム ゾーンに基づいて、CTime オブジェクトを書式設定済みの文字列に変換します。 |
CTime::FormatGmt | UTC に基づいて、CTime オブジェクトを書式設定済みの文字列に変換します。 |
CTime::GetAsDBTIMESTAMP | CTime オブジェクトに格納されている時刻情報を Win32 互換の DBTIMESTAMP 構造体に変換します。 |
CTime::GetAsSystemTime | CTime オブジェクトに格納されている時刻情報を Win32 互換の SYSTEMTIME 構造体に変換します。 |
CTime::GetCurrentTime | 現在の時刻を表す CTime オブジェクトを作成します (静的メンバー関数)。 |
CTime::GetDay | CTime オブジェクトによって表される日を返します。 |
CTime::GetDayOfWeek | CTime オブジェクトによって表される曜日を返します。 |
CTime::GetGmtTm | UTC に基づいて、CTime オブジェクトをコンポーネントに分割します。 |
CTime::GetHour | CTime オブジェクトによって表される時間を返します。 |
CTime::GetLocalTm | ローカル タイム ゾーンに基づいて、CTime オブジェクトをコンポーネントに分割します。 |
CTime::GetMinute | CTime オブジェクトによって表される分を返します。 |
CTime::GetMonth | CTime オブジェクトによって表される月を返します。 |
CTime::GetSecond | CTime オブジェクトによって表される秒を返します。 |
CTime::GetTime | 特定の CTime オブジェクトの __time64_t 値を返します。 |
CTime::GetYear | CTime オブジェクトによって表される年を返します。 |
CTime::Serialize64 | アーカイブとの間でデータをシリアル化します。 |
演算子
名前 | 説明 |
---|---|
演算子 + - | これらの演算子では、CTimeSpan オブジェクトと CTime オブジェクトの間で加算および減算を行います。 |
operator +=、-= | これらの演算子では、この CTime オブジェクトからの CTimeSpan オブジェクトの減算や、それらの加算を行います。 |
operator = | 代入演算子。 |
演算子 ==、< など | 比較演算子。 |
解説
CTime
には基底クラスはありません。
CTime
値は協定世界時 (UTC) に基づいています。これは協定世界時 (グリニッジ標準時、GMT) に相当します。 タイム ゾーンの決定方法については、「時刻の管理」を参照してください。
CTime
オブジェクトを作成するときに、標準時が有効であることを示すには、nDST
パラメーターを 0 に設定します。夏時間が有効であることを示すには、0 より大きい値に設定します。C ランタイム ライブラリ コードによって標準時と夏時間のどちらが有効であるかが計算されるようにするには、0 未満の値に設定します。 tm_isdst
は必須フィールドです。 設定しないと、その値は未定義になり、mktime からの戻り値は予測できません。 timeptr
が、asctime_s、_gmtime_s、または localtime_s への前回の呼び出しで返された tm 構造体を指す場合、tm_isdst
フィールドには正しい値が含まれています。
コンパニオン クラス CTimeSpan は、時間間隔を表します。
CTime
と CTimeSpan
のクラスは、派生するようには設計されていません。 仮想関数はないので、CTime
オブジェクトと CTimeSpan
オブジェクトのサイズは正確に 8 バイトです。 ほとんどのメンバー関数はインラインです。
Note
日付の上限は 12/31/3000 です。 下限は 1/1/1970 12:00:00 AM GMT です。
CTime
の使用の詳細については、ランタイム ライブラリ リファレンスの記事「日付と時刻」および「時刻の管理」を参照してください。
Note
CTime
構造体は MFC 7.1 から MFC 8.0 に変更されました。 MFC 8.0 以降のバージョンの演算子 << を使用して CTime
構造体をシリアル化した場合、結果として得られるファイルは以前のバージョンの MFC では読み取りできません。
要件
ヘッダー: atltime.h
CTime 比較演算子
比較演算子。
bool operator==(CTime time) const throw();
bool operator!=(CTime time) const throw();
bool operator<(CTime time) const throw();
bool operator>(CTime time) const throw();
bool operator<=(CTime time) const throw();
bool operator>=(CTime time) const throw();
パラメーター
time
比較される CTime
オブジェクト。
戻り値
これらの演算子では 2 つの絶対時間を比較し、条件が true の場合は TRUE を返します。それ以外の場合は FALSE を返します。
例
CTime t1 = CTime::GetCurrentTime();
CTime t2 = t1 + CTimeSpan(0, 1, 0, 0); // 1 hour later
ATLASSERT(t1 != t2);
ATLASSERT(t1 < t2);
ATLASSERT(t1 <= t2);
CTime::CTime
指定した時刻で初期化された新しい CTime
オブジェクトを作成します。
CTime() throw();
CTime(__time64_t time) throw();
CTime(int nYear, int nMonth, int nDay,
int nHour, int nMin, int nSec, int nDST = -1);
CTime(WORD wDosDate, WORD wDosTime, int nDST = -1);
CTime(const SYSTEMTIME& st, int nDST = - 1) throw();
CTime(const FILETIME& ft, int nDST = - 1);
CTime(const DBTIMESTAMP& dbts, int nDST = -1) throw();
パラメーター
timeSrc
既に存在する CTime
オブジェクトを示します。
time
__time64_t
時刻値。これは、1970 年 1 月 1 日 (UTC) からの秒数です。 これは現地時刻に合わせて調整されます。 たとえば、ニューヨークにいて、パラメーター 0 を渡して CTime
オブジェクトを作成した場合、CTime::GetMonth は 12 を返します。
nYear、nMonth、nDay、nHour、nMin、nSec
新しい CTime
オブジェクトにコピーする日付と時刻の値を示します。
nDST
夏時間が有効であるかどうかを示します。 次の 3 つの値のいずれかになります。
nDST が 0 に設定されている場合は、標準時が有効です。
nDST が 0 より大きい値に設定されている場合は、夏時間が有効です。
nDST が 0 より小さい値 (既定値) に設定されている場合は、 標準時と夏時間のどちらが有効であるかが自動的に計算されます。
wDosDate、wDosTime
日付と時刻の値に変換されて新しい CTime
オブジェクトにコピーされる MS-DOS の日付と時刻の値。
st
日付と時刻の値に変換されて新しい CTime
オブジェクトにコピーされる SYSTEMTIME 構造体。
ft
日付と時刻の値に変換されて新しい CTime
オブジェクトにコピーされる FILETIME 構造体。
dbts
現在の現地時刻が含まれる DBTIMESTAMP 構造体への参照。
解説
次に、各コンストラクターについて説明します。
CTime();
初期化されていないCTime
オブジェクトを作成します。 このコンストラクターを使用すると、CTime
オブジェクト配列を定義できます。 このような配列を有効な時間で初期化してから使用する必要があります。CTime( const CTime& );
CTime
値からCTime
オブジェクトを作成します。CTime( __time64_t );
__time64_t 型からCTime
オブジェクトを作成します。 このコンストラクターでは、UTC 時刻が想定されており、結果を現地時刻に変換してから格納します。CTime( int, int, ...);
各コンポーネントを次の範囲に制限して、現地時刻コンポーネントからCTime
オブジェクトを作成します。コンポーネント Range nYear 1970-3000 nMonth 1-12 nDay 1-31 nHour 0-23 nMin 0-59 nSec 0-59 このコンストラクターでは、UTC への適切な変換を行います。 1 つ以上の時間コンポーネントが範囲外である場合、デバッグ バージョンの Microsoft Foundation Class ライブラリによってアサートされます。 呼び出す前に引数を検証する必要があります。 このコンストラクターでは、現地時刻が想定されています。
CTime( WORD, WORD );
指定した MS-DOS の日付と時刻の値からCTime
オブジェクトを作成します。 このコンストラクターでは、現地時刻が想定されています。CTime( const SYSTEMTIME& );
SYSTEMTIME
構造体からCTime
オブジェクトを作成します。 このコンストラクターでは、現地時刻が想定されています。CTime( const FILETIME& );
FILETIME
構造体からCTime
オブジェクトを作成します。CTime FILETIME
の初期化を直接使用する可能性はほとんどありません。 ファイルの操作にCFile
オブジェクトを使用する場合は、CFile::GetStatus
により、FILETIME
構造体で初期化されたCTime
オブジェクトを介してファイルのタイム スタンプが取得されます。 このコンストラクターでは、UTC に基づく時刻が想定されており、結果を格納する前に値を現地時刻に自動的に変換します。Note
DBTIMESTAMP
パラメーターを使用するコンストラクターは、OLEDB.h がインクルードされている場合にのみ使用できます。
詳細については、Windows SDK の SYSTEMTIME 構造体と FILETIME 構造体に関するページを参照してください。 また、Windows SDK の「MS-DOS の日付と時刻」のエントリも参照してください。
例
time_t osBinaryTime; // C run-time time (defined in <time.h>)
time(&osBinaryTime) ; // Get the current time from the
// operating system.
CTime time1; // Empty CTime. (0 is illegal time value.)
CTime time2 = time1; // Copy constructor.
CTime time3(osBinaryTime); // CTime from C run-time time
CTime time4(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999
CTime::Format
このメンバー関数を呼び出して、日時値の書式設定済みの表現を作成します。
CString Format(LPCTSTR pszFormat) const;
CString Format(UINT nFormatID) const;
パラメーター
pszFormat
printf
の書式設定文字列に似た書式設定文字列。 前にパーセント (%
) 記号の付いた書式設定コードは、対応する CTime
コンポーネントに置き換えられます。 書式設定文字列内の他の文字は、返される文字列にそのままコピーされます。 書式設定コードの一覧については、strftime ランタイム関数に関するページを参照してください。
nFormatID
この書式を識別する文字列の ID。
戻り値
書式設定済みの時刻を含む CString。
解説
この CTime
オブジェクトの状態が null の場合、戻り値は空の文字列になります。
このメソッドは、書式設定する日時値が 1970 年 1 月 1 日午前 0 時から 3000 年 12 月 31 日 (協定世界時 (UTC)) の範囲ではない場合に例外をスローします。
例
CTime t(1999, 3, 19, 22, 15, 0);
// 10:15 PM March 19, 1999
CString s = t.Format(_T("%A, %B %d, %Y"));
ATLASSERT(s == _T("Friday, March 19, 1999"));
CTime::FormatGmt
この CTime
オブジェクトに対応する書式設定済みの文字列を生成します。
CString FormatGmt(LPCTSTR pszFormat) const;
CString FormatGmt(UINT nFormatID) const;
パラメーター
pszFormat
printf
の書式設定文字列に類似した書式設定文字列を指定します。 詳細については、strftime ランタイム関数に関するページを参照してください。
nFormatID
この書式を識別する文字列の ID。
戻り値
書式設定済みの時刻を含む CString。
解説
時刻値は変換されないので、UTC を反映します。
このメソッドは、書式設定する日時値が 1970 年 1 月 1 日午前 0 時から 3000 年 12 月 31 日 (協定世界時 (UTC)) の範囲ではない場合に例外をスローします。
例
CTime::Format の例を参照してください。
CTime::GetAsDBTIMESTAMP
このメンバー関数を呼び出して、CTime
オブジェクトに格納されている時刻情報を Win32 互換の DBTIMESTAMP 構造体に変換します。
bool GetAsDBTIMESTAMP(DBTIMESTAMP& dbts) const throw();
パラメーター
dbts
現在の現地時刻が含まれる DBTIMESTAMP 構造体への参照。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
結果として得られる時刻を、参照されている dbts 構造体に格納します。 この関数によって初期化された DBTIMESTAMP
データ構造体の fraction
メンバーは、0 に設定されます。
例
CTime t = CTime::GetCurrentTime();
DBTIMESTAMP ts;
t.GetAsDBTIMESTAMP(ts); // Retrieves the time in t into the ts structure
CTime::GetAsSystemTime
このメンバー関数を呼び出して、CTime
オブジェクトに格納されている時刻情報を Win32 互換の SYSTEMTIME 構造体に変換します。
bool GetAsSystemTime(SYSTEMTIME& st) const throw();
パラメーター
timeDest
CTime
オブジェクトから変換された日時値を保持する SYSTEMTIME 構造体への参照。
戻り値
成功した場合は TRUE、それ以外の場合は FALSE。
解説
GetAsSystemTime
では、参照されている timeDest 構造体に結果の日時を格納します。 この関数によって初期化された SYSTEMTIME
データ構造体の wMilliseconds
メンバーは、0 に設定されます。
例
// Convert CTime to FILETIME
CTime time(CTime::GetCurrentTime());
SYSTEMTIME timeDest;
time.GetAsSystemTime(timeDest);
FILETIME fileTime;
::SystemTimeToFileTime(&timeDest, &fileTime);
CTime::GetCurrentTime
現在時刻を表す CTime
オブジェクトを返します。
static CTime WINAPI GetCurrentTime() throw();
解説
現在のシステムの日付と時刻を協定世界時 (UTC) で返します。
例
CTime t = CTime::GetCurrentTime();
CTime::GetDay
CTime
オブジェクトによって表される日を返します。
int GetDay() const throw();
戻り値
現地時刻に基づいて、1 から 31 の範囲の日付を返します。
解説
この関数は、静的に割り当てられた内部バッファーを使用する GetLocalTm
を呼び出します。 このバッファー内のデータは、他の CTime
メンバー関数の呼び出しのために上書きされます。
例
// Example for CTime::GetDay, CTime::GetMonth, and CTime::GetYear
CTime t(1999, 3, 19, 22, 15, 0); // 10:15 PM March 19, 1999
ATLASSERT(t.GetDay() == 19);
ATLASSERT(t.GetMonth() == 3);
ATLASSERT(t.GetYear() == 1999);
CTime::GetDayOfWeek
CTime
オブジェクトによって表される曜日を返します。
int GetDayOfWeek() const throw();
戻り値
現地時刻に基づいて、曜日 (1 = 日曜日、2 = 月曜日、7 = 土曜日) を返します。
解説
この関数は、静的に割り当てられた内部バッファーを使用する GetLocalTm
を呼び出します。 このバッファー内のデータは、他の CTime
メンバー関数の呼び出しのために上書きされます。
例
// Print out the day of the week using localized day name
UINT DayOfWeek[] = {
LOCALE_SDAYNAME7, // Sunday
LOCALE_SDAYNAME1,
LOCALE_SDAYNAME2,
LOCALE_SDAYNAME3,
LOCALE_SDAYNAME4,
LOCALE_SDAYNAME5,
LOCALE_SDAYNAME6 // Saturday
};
TCHAR strWeekday[256];
CTime time(CTime::GetCurrentTime()); // Initialize CTime with current time
::GetLocaleInfo(LOCALE_USER_DEFAULT, // Get string for day of the week from system
DayOfWeek[time.GetDayOfWeek()-1], // Get day of week from CTime
strWeekday, sizeof(strWeekday) / sizeof(strWeekday[0]));
ATLTRACE(_T("%s\n"), strWeekday); // Print out day of the week
CTime::GetGmtTm
この CTime
オブジェクトに含まれている時刻の分解を含む構造体 tm を取得します。
struct tm* GetGmtTm(struct tm* ptm) const;
パラメーター
ptm
時刻データを受信するバッファーを指します。 このポインターが NULL の場合、例外がスローされます。
戻り値
インクルード ファイル TIME.H で定義されている、入力された構造体 tm へのポインター。 構造体のレイアウトについては、「gmtime、_gmtime32、_gmtime64」を参照してください。
解説
GetGmtTm
は UTC を返します。
ptm を NULL にすることはできません。 以前の動作 (ptm に NULL を指定して、静的に割り当てられた内部バッファーを使用することを示すことができる) に戻す場合は、_SECURE_ATL の定義を解除します。
例
// Compute difference between local time and GMT
CTime time(CTime::GetCurrentTime());
tm t1, t2;
time.GetLocalTm(&t1);
time.GetGmtTm(&t2);
ATLTRACE(_T("Difference between local time and GMT is %d hours.\n"),
t1.tm_hour - t2.tm_hour);
CTime::GetHour
CTime
オブジェクトによって表される時間を返します。
int GetHour() const throw();
戻り値
現地時刻に基づいて、0 から 23 の範囲の時間を返します。
解説
この関数は、静的に割り当てられた内部バッファーを使用する GetLocalTm
を呼び出します。 このバッファー内のデータは、他の CTime
メンバー関数の呼び出しのために上書きされます。
例
// Example for CTime::GetHour, CTime::GetMinute, and CTime::GetSecond
CTime t(1999, 3, 19, 22, 15, 0); // 10:15 PM March 19, 1999
ATLASSERT(t.GetSecond() == 0);
ATLASSERT(t.GetMinute() == 15);
ATLASSERT(t.GetHour() == 22);
CTime::GetLocalTm
この CTime
オブジェクトに含まれている時刻の分解を含む構造体 tm を取得します。
struct tm* GetLocalTm(struct tm* ptm) const;
パラメーター
ptm
時刻データを受信するバッファーを指します。 このポインターが NULL の場合、例外がスローされます。
戻り値
インクルード ファイル TIME.H で定義されている、入力された構造体 tm へのポインター。 構造体のレイアウトについては、「gmtime、_gmtime32、_gmtime64」を参照してください。
解説
GetLocalTm
は現地時刻を返します。
ptm を NULL にすることはできません。 以前の動作 (ptm に NULL を指定して、静的に割り当てられた内部バッファーを使用することを示すことができる) に戻す場合は、_SECURE_ATL の定義を解除します。
例
CTime t(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999
tm osTime; // A structure containing time elements.
t.GetLocalTm(&osTime);
ATLASSERT(osTime.tm_mon == 2); // Note zero-based month!
CTime::GetMinute
CTime
オブジェクトによって表される分を返します。
int GetMinute() const throw();
戻り値
現地時刻に基づいて、0 から 59 の範囲の分を返します。
解説
この関数は、静的に割り当てられた内部バッファーを使用する GetLocalTm
を呼び出します。 このバッファー内のデータは、他の CTime
メンバー関数の呼び出しのために上書きされます。
例
GetHour の例を参照してください。
CTime::GetMonth
CTime
オブジェクトによって表される月を返します。
int GetMonth() const throw();
戻り値
現地時刻に基づいて、1 から 12 の範囲の月 (1 = 1 月) を返します。
解説
この関数は、静的に割り当てられた内部バッファーを使用する GetLocalTm
を呼び出します。 このバッファー内のデータは、他の CTime
メンバー関数の呼び出しのために上書きされます。
例
GetDay の例を参照してください。
CTime::GetSecond
CTime
オブジェクトによって表される秒を返します。
int GetSecond() const throw();
戻り値
現地時刻に基づいて、0 から 59 の範囲の秒を返します。
解説
この関数は、静的に割り当てられた内部バッファーを使用する GetLocalTm
を呼び出します。 このバッファー内のデータは、他の CTime
メンバー関数の呼び出しのために上書きされます。
例
GetHour の例を参照してください。
CTime::GetTime
特定の CTime
オブジェクトの __time64_t 値を返します。
__time64_t GetTime() const throw();
戻り値
GetTime
は、1970 年 1 月 1 日から現在の CTime
オブジェクトまでの秒数を返します。
例
CTime t(2005, 10, 20, 23, 50, 0); // 11:50 PM October 20, 2005
time_t osBinaryTime = t.GetTime(); // time_t defined in <time.h>
_tprintf_s(_T("time_t = %ld\n"), osBinaryTime);
CTime::GetYear
CTime
オブジェクトによって表される年を返します。
int GetYear();
戻り値
現地時刻に基づいて、1970 年 1 月 1 日から 2038 年 1 月 18 日 (包括的) の範囲の年を返します。
解説
この関数は、静的に割り当てられた内部バッファーを使用する GetLocalTm
を呼び出します。 このバッファー内のデータは、他の CTime
メンバー関数の呼び出しのために上書きされます。
例
GetDay の例を参照してください。
CTime::operator =
代入演算子。
CTime& operator=(__time64_t time) throw();
パラメーター
time
新しい日付と時刻の値。
戻り値
更新後の CTime
オブジェクト。
解説
このオーバーロードされた代入演算子では、ソース時間をこの CTime
オブジェクトにコピーします。 CTime
オブジェクトの内部時刻記憶は、タイム ゾーンに依存しません。 代入時に、タイム ゾーンの変換は必要ありません。
CTime::operator +, -
これらの演算子では、CTimeSpan
オブジェクトと CTime
オブジェクトの間で加算および減算を行います。
CTime operator+(CTimeSpan timeSpan) const throw();
CTime operator-(CTimeSpan timeSpan) const throw();
CTimeSpan operator-(CTime time) const throw();
パラメーター
timeSpan
加算または減算される CTimeSpan
オブジェクト。
time
減算される CTime
オブジェクト。
戻り値
操作の結果を表す CTime
または CTimeSpan
オブジェクト。
解説
CTime
オブジェクトは絶対時間を表し、CTimeSpan
オブジェクトは相対時間を表します。 最初の 2 つの演算子を使用すると、CTime
オブジェクトからの CTimeSpan
オブジェクトの減算や、それらの加算を行うことができます。 3 番目の演算子を使用すると、ある CTime
オブジェクトを別の値から減算して、CTimeSpan
オブジェクトを生成することができます。
例
CTime t1(1999, 3, 19, 22, 15, 0); // 10:15 PM March 19, 1999
CTime t2(1999, 3, 20, 22, 15, 0); // 10:15 PM March 20, 1999
CTimeSpan ts = t2 - t1; // Subtract 2 CTimes
ATLASSERT(ts.GetTotalSeconds() == 86400L);
ATLASSERT((t1 + ts) == t2); // Add a CTimeSpan to a CTime.
ATLASSERT((t2 - ts) == t1); // Subtract a CTimeSpan from a CTime.
CTime::operator +=、-=
これらの演算子では、この CTime
オブジェクトからの CTimeSpan
オブジェクトの減算や、それらの加算を行います。
CTime& operator+=(CTimeSpan span) throw();
CTime& operator-=(CTimeSpan span) throw();
パラメーター
span
加算または減算される CTimeSpan
オブジェクト。
戻り値
更新後の CTime
オブジェクト。
解説
これらの演算子を使用すると、この CTime
オブジェクトからの CTimeSpan
オブジェクトの減算や、それらの加算を行うことができます。
例
CTime t(1999, 3, 19, 22, 15, 0); // 10:15 PM March 19, 1999
t += CTimeSpan(0, 1, 0, 0); // 1 hour exactly
ATLASSERT(t.GetHour() == 23);
CTime::Serialize64
Note
このメソッドは、MFC プロジェクトでのみ使用できます。
アーカイブとの間で、メンバー変数に関連付けられたデータをシリアル化します。
CArchive& Serialize64(CArchive& ar);
パラメーター
ar
更新する CArchive
オブジェクト。
戻り値
更新後の CArchive
オブジェクト。
関連項目
asctime_s、_wasctime_s
_ftime_s、_ftime32_s、_ftime64_s
gmtime_s、_gmtime32_s、_gmtime64_s
localtime_s、_localtime32_s、_localtime64_s
strftime、wcsftime、_strftime_l、_wcsftime_l
time、_time32、_time64
CTimeSpan クラス
階層図
ATL/MFC 共有クラス