gmtime、_gmtime32、_gmtime64
時刻の値を構造体に変換します。 これらの関数のセキュリティを強化したバージョンについては、「gmtime_s、_gmtime32_s、_gmtime64_s」を参照してください。
struct tm *gmtime(
const time_t *timer
);
struct tm *_gmtime32(
const __time32_t *timer
);
struct tm *_gmtime64(
const __time64_t *timer
);
パラメーター
- timer
格納されている時刻へのポインター。 時刻は、世界協定時刻 (UTC: Coordinated Universal Time) の 1970 年 1 月 1 日の深夜 00:00:00 から経過した時間 (秒単位) を表します。
戻り値
tm 構造体へのポインター。 返された構造体の各フィールドには、timer 引数を現地時刻ではなく UTC で評価した値が格納されています。 構造体の各フィールドは int 型で、次のとおりです:
tm_sec
秒 (0 ~ 59)。tm_min
分 (0 ~ 59)。tm_hour
時 (0 ~ 23)。tm_mday
日 (1 ~ 31)。tm_mon
月 (0 ~ 11、1 月 = 0)。tm_year
年 (実際の西暦から 1900 を引いた数)tm_wday
曜日 (0 ~ 6、日曜日 = 0)。tm_yday
年内の通算日 (0 ~ 365、1 月 1 日 = 0)。tm_isdst
gmtime では常に 0。
32 ビット バージョンおよび 64 ビット バージョンの gmtime、mktime、mkgmtime、localtime の各関数はすべて、1 スレッドあたり共通の tm 構造体を 1 つ使用して変換を行います。 これらの関数を呼び出すたびに、前の呼び出しの結果は破棄されます。 timer が 1970 年 1 月 1 日の深夜 0 時よりも前の日付を示している場合、gmtime は NULL を返します。 エラーの戻り値はありません。
__time64_t 構造体を使用する _gmtime64 は、UTC の 3000 年 12 月 31 日の 23 時 59 分 59 秒までの日付を表すことができます。それに対して、_gmtime32 は、UTC の 2038 年 1 月 19 日の 03 時 14 分 07 秒までしか表すことができません。 これらの関数の日付範囲の下限は、どちらも 1970 年 1 月 1 日の午前 0 時です。
gmtime は _gmtime64 に評価されるインライン関数であり、time_t は _USE_32BIT_TIME_T が定義されている場合を除き __time64_t と等価です。 コンパイラに time_t を従来の 32 ビットの time_t として解釈させる必要がある場合は、_USE_32BIT_TIME_T を定義できますが、そのためには gmtime を _gmtime32 にインライン展開し、time_t を __time32_t として定義します。 この方法は使用しないことをお勧めします。これは 64 ビット プラットフォームでは使用できず、また 2038 年 1 月 18 日以降はアプリケーションでエラーが発生する可能性があるためです。
これらの関数では、パラメーターの検証が行われます。 timer が null ポインターの場合またはタイマー値が負の場合、「パラメーターの検証」に説明されているように、これらの関数は無効なパラメーター ハンドラーを呼び出します。 実行の継続が許可された場合、関数は NULL を返し、errno を EINVAL に設定します。
解説
_gmtime32 関数は、timer 値を展開して、TIME.H に定義され、静的に割り当てられた tm 型の構造体に保存します。 timer 値は、通常は time 関数の呼び出しにより取得されます。
注意
ほとんどの場合は、対象の環境で夏時間が有効かどうかを確認してください。C ランタイム ライブラリでは、夏時間 (DST) の計算にアメリカ合衆国の規則が使用されていることを前提とします。
必要条件
ルーチン |
必須ヘッダー |
---|---|
gmtime |
<time.h> |
_gmtime32 |
<time.h> |
_gmtime64 |
<time.h> |
互換性の詳細については、「互換性」を参照してください。
使用例
// crt_gmtime.c
// compile with: /W3
// This program uses _gmtime64 to convert a long-
// integer representation of coordinated universal time
// to a structure named newtime, then uses asctime to
// convert this structure to an output string.
#include <time.h>
#include <stdio.h>
int main( void )
{
struct tm *newtime;
__int64 ltime;
char buff[80];
_time64( <ime );
// Obtain coordinated universal time:
newtime = _gmtime64( <ime ); // C4996
// Note: _gmtime64 is deprecated; consider using _gmtime64_s
asctime_s( buff, sizeof(buff), newtime );
printf( "Coordinated universal time is %s\n", buff );
}
同等の .NET Framework 関数
参照
関連項目
ctime、_ctime32、_ctime64、_wctime、_wctime32、_wctime64
gmtime_s、_gmtime32_s、_gmtime64_s
localtime、_localtime32、_localtime64