CTime クラス

絶対時刻と日付を表します。

構文

class CTime

メンバー

パブリック コンストラクター

名前 説明
CTime:: CTime CTimeさまざまな方法でオブジェクトを構築します。

パブリック メソッド

名前 説明
CTime:: 形式 CTime— ローカルタイムゾーンに基づいて、オブジェクトを書式設定された文字列に変換します。
CTime:: FormatGmt オブジェクトを CTime UTC に基づいて書式設定された文字列に変換し — ます。
CTime:: GetAsDBTIMESTAMP オブジェクトに格納されている時刻情報 CTime を Win32 互換の DBTIMESTAMP 構造体に変換します。
CTime:: GetAsSystemTime オブジェクトに格納されている時刻情報 CTime を Win32 互換の CTime 構造体に変換します。
CTime:: GetCurrentTime CTime現在の時刻 (静的メンバー関数) を表すオブジェクトを作成します。
CTime:: GetDay オブジェクトによって表される日を返し CTime ます。
CTime:: GetDayOfWeek オブジェクトで表される曜日を返し CTime ます。
CTime:: GetGmtTm CTimeUTC に基づいてオブジェクトをコンポーネントに分割し — ます。
CTime:: Gethour: オブジェクトで表される時間を返し CTime ます。
CTime:: GetLocalTm CTimeオブジェクトを — ローカルタイムゾーンに基づいてコンポーネントに分割します。
CTime:: GetMinute オブジェクトによって表される分を返し CTime ます。
CTime:: GetMonth オブジェクトで表される月を返し CTime ます。
CTime:: GetSecond オブジェクトによって表される2番目のを返し CTime ます。
CTime:: GetTime 指定されたオブジェクトの __time64_t 値を返し ます。
CTime:: GetYear オブジェクトによって表される年を返し CTime ます。
CTime:: Serialize64 アーカイブとの間でデータをシリアル化します。

オペレーター

名前 説明
演算子 +- これらの演算子は CTimeSpan 、オブジェクトとオブジェクトを加算および減算し CTime ます。
operator + =、-= これらの演算子は、オブジェクトを CTimeSpan このオブジェクトとの間で加算および減算し CTime ます。
operator = 代入演算子。
operator = =、 、など。 比較演算子。

解説

CTime に基底クラスがありません。

CTime 値は世界協定時刻 (UTC) に基づいています。協定世界時 (グリニッジ標準時) と同等です。 タイムゾーンの決定方法については、「 時間管理 」を参照してください。

オブジェクトを作成するときに、パラメーターを0に設定して、標準時間が有効であることを示すか、または夏時間が有効であることを CTimenDST 示す0より大きい値に設定します。または、標準時間と夏時間のどちらが有効であるかを C ランタイムライブラリコードで計算します。 tm_isdst は必須フィールドです。 値が設定されていない場合、その値は未定義で、 mktime からの戻り値は予測できません。 が timeptrtimeptr_gmtime_s、または localtime_sの前回の呼び出しによって返された tm 構造体を指している場合、フィールドには 正しい値が格納されます。

コンパニオンクラス CTimeSpanは、時間間隔を表します。

CTimeクラスと CTimeSpan クラスは、派生用には設計されていません。 仮想関数は存在しないため、 CTime オブジェクトとオブジェクトのサイズ CTimeSpan は完全に8バイトです。 ほとんどのメンバー関数はインラインです。

Note

上限の日付は12/31/3000 です。 下限は 1/1/1970 12:00:00 AM GMT です。

の使用方法の詳細については CTime 、Run-Time ライブラリリファレンスの記事「 CTime」と「 時間管理 」を参照してください。

Note

CTime構造体が mfc 7.1 から mfc 8.0 に変更されました。 CTimeMfc 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日以降の秒数です。 これは、現地時刻に調整されることに注意してください。 たとえば、ニューヨークにい CTime て、パラメーター0を渡すことによってオブジェクトを作成した場合、 CTime は12を返します。

NyearnyearnyearnyearnyearnSec
新しいオブジェクトにコピーされる日付と時刻の値を示し CTime ます。

nDST
夏時間が有効かどうかを示します。 次の3つの値のいずれかを指定できます。

  • nDST を 0standard time に設定すると有効になります。

  • nDST は、0より大きな値に設定されています。

  • NDST は既定値の0未満の値に設定されます。 標準時間と夏時間のどちらを有効にするかを自動的に計算します。

WdosdatewDosTime
日付/時刻値に変換され、新しいオブジェクトにコピーされる MS-DOS の日付と時刻の値 CTime

&
日付/時刻値に変換され、新しいオブジェクトにコピーされる SYSTEMTIME 構造体

cm
日付/時刻値に変換され、新しいオブジェクトにコピーされる FILETIME 構造体

dbts
現在の現地時刻を格納している DBTIMESTAMP 構造体への参照。

解説

各コンストラクターについて以下に説明します。

  • CTime(); 初期化さ CTime れていないオブジェクトを構築します。 このコンストラクターを使用すると、オブジェクト配列を定義でき CTime ます。 を使用する前に、有効な時刻でこのような配列を初期化する必要があります。

  • CTime( const CTime& ); 別の CTime 値からオブジェクトを構築 CTime します。

  • CTime( __time64_t );CTimeCTime( __time64_t );型からオブジェクトを構築します。 このコンストラクターは UTC 時刻を想定し、結果を格納する前に結果を現地時刻に変換します。

  • CTime( int, int, ...);CTime各コンポーネントが次の範囲に制限されているローカルタイムコンポーネントからオブジェクトを構築します。

    コンポーネント Range
    nYear 1970-3000
    nMonth 1-12
    nDay 1-31
    nHour 0-23
    N1 日 0-59
    nSec 0-59

    このコンストラクターは、UTC への適切な変換を行います。 1つ以上の時間コンポーネントが範囲外の場合、Microsoft Foundation Class ライブラリのデバッグバージョンはアサートします。 を呼び出す前に、引数を検証する必要があります。 このコンストラクターには、ローカル時刻が必要です。

  • CTime( WORD, WORD ); 指定し CTime た MS-DOS の日付と時刻の値からオブジェクトを構築します。 このコンストラクターには、ローカル時刻が必要です。

  • CTime( const SYSTEMTIME& );CTime構造体からオブジェクトを構築 SYSTEMTIME します。 このコンストラクターには、ローカル時刻が必要です。

  • CTime( const FILETIME& );CTime構造体からオブジェクトを構築 FILETIME します。 通常は、初期化を直接使用しません CTime FILETIME 。 オブジェクトを使用し CFile てファイルを操作する場合、は CFile::GetStatus 構造体で初期化されたオブジェクトを使用してファイルのタイムスタンプを取得し CTimeFILETIME ます。 このコンストラクターは、UTC に基づく時間を想定しており、結果を格納する前に、値を自動的に現地時刻に変換します。

    Note

    パラメーターを使用するコンストラクターは、 DBTIMESTAMP OLEDB が含まれている場合にのみ使用できます。

詳細については、Windows SDK の「 SYSTEMTIMEFILETIMEの構造」を参照してください。 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:: 形式

日付/時刻値の書式設定された表現を作成するには、このメンバー関数を呼び出します。

CString Format(LPCTSTR pszFormat) const;
CString Format(UINT nFormatID) const;

パラメーター

pszFormat
書式設定文字列に類似した書式設定文字列 printf 。 書式指定コードの前にパーセント () 記号を付けると、 % 対応するコンポーネントが置き換えられ CTime ます。 書式設定文字列内のその他の文字は、返された文字列にそのままコピーされます。 書式設定コードの一覧については、「ランタイム関数 strftime 」を参照してください。

nFormatID
この形式を識別する文字列の ID。

戻り値

書式設定された時刻を格納している CString

解説

このオブジェクトの状態 CTime が null の場合、戻り値は空の文字列になります。

このメソッドは、書式設定する日付/時刻の値が、1970年1月1日午前0時 (UTC) の3000世界協定時刻 (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時 (UTC) の3000世界協定時刻 (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 互換の CTime 構造体に変換します。

bool GetAsSystemTime(SYSTEMTIME& st) const throw();

パラメーター

timeDest
オブジェクトの変換された日付/時刻値を保持する SYSTEMTIME 構造体への参照

戻り値

成功した場合は TRUE、それ以外の場合は FALSE。

Remarks

GetAsSystemTime は、結果の時間を参照 GetAsSystemTime します。 この 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

この オブジェクト に含まれる 時間の分解を含む構造体 tm を取得 します。

struct tm* GetGmtTm(struct tm* ptm) const;

パラメーター

Ptm
時刻データを受信するバッファーをポイントします。 このポインターが NULL の場合、例外がスローされます。

戻り値

include ファイル 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

この オブジェクト に含まれる 時間の分解を含む構造体 tm を取得 します。

struct tm* GetLocalTm(struct tm* ptm) const;

パラメーター

Ptm
時刻データを受信するバッファーをポイントします。 このポインターが NULL の場合、例外がスローされます。

戻り値

include ファイル 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

オブジェクトによって表される 2 番目の を返 CTime します。

int GetSecond() const throw();

戻り値

0 ~ 59 の範囲で、ローカル時刻に基づいて 2 番目の を返します。

解説

この関数は、 GetLocalTm 静的に割り当てられた内部バッファーを使用する を呼び出します。 このバッファー内のデータは、他のメンバー関数の呼び出しのために CTime 上書きされます。

GetHour の例を参照してください

CTime::GetTime

指定したオブジェクト __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減算されるオブジェクト。

戻り値

CTimeCTimeSpan 操作の結果を表すオブジェクトまたはオブジェクト。

解説

CTime オブジェクトは絶対時間を表し、 CTimeSpan オブジェクトは相対時間を表します。 最初の2つの演算子を使用すると、オブジェクトをオブジェクトに追加したり、オブジェクトからオブジェクトを削除したりでき CTimeSpanCTime ます。 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 + =、-=

これらの演算子は、オブジェクトを CTimeSpan このオブジェクトとの間で加算および減算し CTime ます。

CTime& operator+=(CTimeSpan span) throw();
CTime& operator-=(CTimeSpan span) throw();

パラメーター

スパン
CTimeSpan加算または減算するオブジェクト。

戻り値

更新された CTime オブジェクト。

解説

これらの演算子を使用すると、オブジェクトをこのオブジェクトに追加したり、 CTimeSpan このオブジェクトからオブジェクトを削除したりでき CTime ます。

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 共有クラス