gmtime_s、_gmtime32_s、_gmtime64_sgmtime_s, _gmtime32_s, _gmtime64_s

時刻値をtm構造体に変換します。Converts a time value to a tm structure. これらは、「Security Features in the CRT」 (CRT のセキュリティ機能) で説明されているように、セキュリティが強化されたバージョンの _gmtime32、_gmtime64 です。These are versions of _gmtime32, _gmtime64 with security enhancements as described in Security Features in the CRT.


errno_t gmtime_s(
   struct tm* tmDest,
   const __time_t* sourceTime
errno_t _gmtime32_s(
   struct tm* tmDest,
   const __time32_t* sourceTime
errno_t _gmtime64_s(
   struct tm* tmDest,
   const __time64_t* sourceTime


Tm構造体へのポインター。Pointer to a tm structure. 返される構造体のフィールドは、タイマー引数の評価値を現地時刻ではなく UTC で保持します。The fields of the returned structure hold the evaluated value of the timer argument in UTC rather than in local time.

格納されている時刻へのポインター。Pointer to stored time. 時刻は、世界協定時刻 (UTC: Coordinated Universal Time) の 1970 年 1 月 1 日の深夜 00:00:00 から経過した時間 (秒単位) を表します。The time is represented as seconds elapsed since midnight (00:00:00), January 1, 1970, coordinated universal time (UTC).

戻り値Return Value

正常終了した場合は 0。Zero if successful. 障害が発生した場合、戻り値はエラー コードを示します。The return value is an error code if there is a failure. エラー コードは Errno.h で定義されます。これらのエラーの一覧については、errno をご覧ください。Error codes are defined in Errno.h; for a listing of these errors, see errno.

エラー条件Error Conditions

tmDesttmDest sourceTimesourceTime ReturnReturn Tmdestの値Value in tmDest
NULLNULL 任意any EINVALEINVAL 変更されません。Not modified.
Not NULL (有効なメモリを指す)Not NULL (points to valid memory) NULLNULL EINVALEINVAL すべてのフィールドが-1 に設定されます。All fields set to -1.
NULL以外Not NULL < 0< 0 EINVALEINVAL すべてのフィールドが-1 に設定されます。All fields set to -1.

最初の 2 つのエラーの場合は、「Parameter Validation」 (パラメーターの検証) に説明されているとおり、無効なパラメーター ハンドラーが呼び出されます。In the case of the first two error conditions, the invalid parameter handler is invoked, as described in Parameter Validation. 実行の継続が許可された場合、これらの関数はerrnoeinvalに設定し、 einvalを返します。If execution is allowed to continue, these functions set errno to EINVAL and return EINVAL.


_Gmtime32_s関数は、 sourcetime値を分割し、time. h で定義されているtm型の構造に格納します。The _gmtime32_s function breaks down the sourceTime value and stores it in a structure of type tm, defined in Time.h. 構造体のアドレスは、 Tmdestで渡されます。The address of the structure is passed in tmDest. Sourcetimeの値は、通常、 time関数の呼び出しから取得されます。The value of sourceTime is usually obtained from a call to the time function.


対象の環境によって、夏時間が有効かどうか判断されます。The target environment should try to determine whether daylight savings time is in effect. C ランタイム ライブラリでは、アメリカ合衆国の規則を前提に夏時間を計算します。The C run-time library assumes the United States rules for implementing the calculation of daylight saving time .

次の表に示すように、構造体の各フィールドはint型です。Each of the structure fields is of type int, as shown in the following table.

フィールドField 説明Description
tm_sectm_sec 秒後 (0-59)。Seconds after minute (0 - 59).
tm_mintm_min 分後 (0-59)。Minutes after hour (0 - 59).
tm_hourtm_hour 深夜からの時間 (0-23)。Hours since midnight (0 - 23).
tm_mdaytm_mday 月の通算日 (1-31)。Day of month (1 - 31).
tm_montm_mon 月 (0-11;1月 = 0)。Month (0 - 11; January = 0).
tm_yeartm_year 年 (実際の西暦から 1900 を引いた数)Year (current year minus 1900).
tm_wdaytm_wday 曜日 (0-6;日曜日 = 0)。Day of week (0 - 6; Sunday = 0).
tm_ydaytm_yday 年の通算日 (0-365;1月1日 = 0)。Day of year (0 - 365; January 1 = 0).
tm_isdsttm_isdst Gmtime_sの場合は常に0です。Always 0 for gmtime_s.

__time64_t構造体を使用する _gmtime64_sでは、23:59:59 年12月 31 3000 日までの日付を表すことができます。一方2038、 gmtime32_sは、23:59:59 年1月18日からまでの日付のみを表します。_gmtime64_s, which uses the __time64_t structure, allows dates to be expressed up through 23:59:59, December 31, 3000, UTC; whereas gmtime32_s only represent dates through 23:59:59 January 18, 2038, UTC. これらの関数の日付範囲の下限は、どちらも 1970 年 1 月 1 日の午前 0 時です。Midnight, January 1, 1970, is the lower bound of the date range for both these functions.

gmtime_sは、 _gmtime64_sに評価されるインライン関数で、 time_t__time64_tに相当します。gmtime_s is an inline function which evaluates to _gmtime64_s and time_t is equivalent to __time64_t. 以前の32ビットのtime_tとしてtime_tを解釈するようにコンパイラに強制する必要がある場合は、 _USE_32BIT_TIME_Tを定義できます。If you need to force the compiler to interpret time_t as the old 32-bit time_t, you can define _USE_32BIT_TIME_T. これを行うと、 gmtime_s_gmtime32_sにインラインで配置されます。Doing this will cause gmtime_s to be in-lined to _gmtime32_s. ただし、この方法は推奨されません。2038 年 1 月 18 日以降にアプリケーションがエラーになる可能性があり、また、64 ビット プラットフォームでは使用できないためです。This is not recommended because your application may fail after January 18, 2038, and it is not allowed on 64-bit platforms.


ルーチンRoutine 必須の C ヘッダーRequired C header 必須の C++ ヘッダーRequired C++ header
gmtime_s_gmtime32_s_gmtime64_sgmtime_s, _gmtime32_s, _gmtime64_s <time.h><time.h> <ctime > また<は time .h ><ctime> or <time.h>

互換性の詳細については、「 互換性」を参照してください。For more compatibility information, see Compatibility.


// crt_gmtime64_s.c
// This program uses _gmtime64_s to convert a 64-bit
// integer representation of coordinated universal time
// to a structure named newtime, then uses asctime_s to
// convert this structure to an output string.

#include <time.h>
#include <stdio.h>

int main( void )
   struct tm newtime;
   __int64 ltime;
   char buf[26];
   errno_t err;

   _time64( &ltime );

   // Obtain coordinated universal time:
   err = _gmtime64_s( &newtime, &ltime );
   if (err)
      printf("Invalid Argument to _gmtime64_s.");

   // Convert to an ASCII representation
   err = asctime_s(buf, 26, &newtime);
   if (err)
      printf("Invalid Argument to asctime_s.");

   printf( "Coordinated universal time is %s\n",
           buf );
Coordinated universal time is Fri Apr 25 20:12:33 2003

関連項目See also

時間管理Time Management
asctime_s、_wasctime_sasctime_s, _wasctime_s
ctime、_ctime32、_ctime64、_wctime、_wctime32、_wctime64ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
_ftime、_ftime32、_ftime64_ftime, _ftime32, _ftime64
gmtime、_gmtime32、_gmtime64gmtime, _gmtime32, _gmtime64
localtime_s、_localtime32_s、_localtime64_slocaltime_s, _localtime32_s, _localtime64_s
_mkgmtime、_mkgmtime32、_mkgmtime64_mkgmtime, _mkgmtime32, _mkgmtime64
mktime、_mktime32、_mktime64mktime, _mktime32, _mktime64
time、_time32、_time64time, _time32, _time64