_mkgmtime、_mkgmtime32、_mkgmtime64_mkgmtime, _mkgmtime32, _mkgmtime64

によって表される UTC 時刻に変換を構造体 tmによって表される UTC 時刻に、 time_t型。Converts a UTC time represented by a struct tm to a UTC time represented by a time_t type.

構文Syntax

time_t _mkgmtime(
   struct tm* timeptr
);
__time32_t _mkgmtime32(
   struct tm* timeptr
);
__time64_t _mkgmtime64(
   struct tm* timeptr
);

パラメーターParameters

timeptrtimeptr
としての UTC 時刻へのポインターを構造体 tmに変換します。A pointer to the UTC time as a struct tm to convert.

戻り値Return Value

型の数量 _ _time32_tまたは _ _time64_t世界協定時刻 (UTC) で 1970 年 1 月 1 日午前 0 時から経過した秒数を表します。A quantity of type __time32_t or __time64_t representing the number of seconds elapsed since midnight, January 1, 1970, in Coordinated Universal Time (UTC). 日付が範囲外の場合 (「解説」を参照してください)、または、入力は、有効な時刻として解釈できない場合、戻り値は-1。If the date is out of range (see the Remarks section) or the input cannot be interpreted as a valid time, the return value is -1.

RemarksRemarks

_Mkgmtime32_mkgmtime64関数に変換する UTC 時刻を _ _time32_tまたは _ _time64_tの時刻を表す型UTC です。The _mkgmtime32 and _mkgmtime64 functions convert a UTC time to a __time32_t or __time64_t type representing the time in UTC. ローカル時刻を UTC 時刻に変換するには使用mktime_mktime32、および _mktime64代わりにします。To convert a local time to UTC time, use mktime, _mktime32, and _mktime64 instead.

_mkgmtimeに評価されるインライン関数は、 _mkgmtime64、およびtime_tと等価 _ _time64_tします。_mkgmtime is an inline function that evaluates to _mkgmtime64, and time_t is equivalent to __time64_t. 強制的にコンパイラを解釈する必要がある場合time_t古い 32 ビットとして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. これは、は、2038 年 1 月 18 日後、アプリケーションが失敗するため、推奨されませんが (32 ビットの最大範囲time_t)、64 ビット プラットフォーム上ですべての許可されていないとします。This is not recommended because your application might fail after January 18, 2038 (the maximum range of a 32-bit time_t), and it is not allowed at all on 64-bit platforms.

構造体が渡された時間は変更次のように、同じ方法で、変更されると、関数: tm_wdaytm_ydayフィールドに新しい設定値の値に基づいてtm_mdaytm_yearします。The time structure passed in will be changed as follows, in the same way as they are changed with the _mktime functions: the tm_wday and tm_yday fields are set to new values based on the values of tm_mday and tm_year. 指定するときに、 tm時間構造体は、設定、 tm_isdstにフィールド。When specifying a tm structure time, set the tm_isdst field to:

  • 標準時間が有効であることを示す場合はゼロ (0)。Zero (0) to indicate that standard time is in effect.

  • 夏時間が有効であることを示す場合は 0 より大きい値。A value greater than 0 to indicate that daylight saving time is in effect.

  • 標準時間と夏時間のどちらが有効であるかを C ランタイム ライブラリ コードで計算する場合は 0 より小さい値。A value less than zero to have the C run-time library code compute whether standard time or daylight saving time is in effect.

C ランタイム ライブラリは、TZ 環境変数を使用して、正しい夏時間を特定します。The C run-time library uses the TZ environment variable to determine the correct daylight savings time. TZ が設定されていない場合は、オペレーティング システムに照会して、正しい地域の夏時間の動作を取得します。If TZ is not set, the operating system is queried to get the correct regional daylight savings time behavior. tm_isdstは必須フィールドです。tm_isdst is a required field. 設定しないかどうか、その値はない定義からの戻り値およびmktimeは予測できません。If not set, its value is undefined and the return value from mktime is unpredictable.

範囲、 _mkgmtime32関数は 1970 年 1 月 1 日、午前 0 時から 2038 年 1 月 18 日 23時 59分: 59 までの UTC。The range of the _mkgmtime32 function is from midnight, January 1, 1970, UTC to 23:59:59 January 18, 2038, UTC. 範囲 _mkgmtime64 3000 年 12 月 31 日 23時 59分: 59 秒に UTC 1970 年 1 月 1 日午前 0 時 UTC からです。The range of _mkgmtime64 is from midnight, January 1, 1970, UTC to 23:59:59, December 31, 3000, UTC. 戻り値-1 が範囲外の日付になります。An out-of-range date results in a return value of -1. 範囲 _mkgmtimeかどうかによって異なります _USE_32BIT_TIME_Tが定義されています。The range of _mkgmtime depends on whether _USE_32BIT_TIME_T is defined. (既定値) が定義されていない場合、範囲は _mkgmtime64。 それ以外の範囲はの 32 ビットの範囲に制限されます _mkgmtime32します。If not defined (the default) the range is that of _mkgmtime64; otherwise, the range is limited to the 32-bit range of _mkgmtime32.

なおgmtimelocaltime変換に 1 つの静的に割り当てられたバッファーを使用します。Note that gmtime and localtime use a single statically allocated buffer for the conversion. このバッファーを指定する場合mkgmtime、以前の内容は破棄されます。If you supply this buffer to mkgmtime, the previous contents are destroyed.

Example

// crt_mkgmtime.c
#include <stdio.h>
#include <time.h>

int main()
{
    struct tm t1, t2;
    time_t now, mytime, gmtime;
    char buff[30];

    time( & now );

    _localtime64_s( &t1, &now );
    _gmtime64_s( &t2, &now );

    mytime = mktime(&t1);
    gmtime = _mkgmtime(&t2);

    printf("Seconds since midnight, January 1, 1970\n");
    printf("My time: %I64d\nGM time (UTC): %I64d\n\n", mytime, gmtime);

    /* Use asctime_s to display these times. */

    _localtime64_s( &t1, &mytime );
    asctime_s( buff, sizeof(buff), &t1 );
    printf( "Local Time: %s\n", buff );

    _gmtime64_s( &t2, &gmtime );
    asctime_s( buff, sizeof(buff), &t2 );
    printf( "Greenwich Mean Time: %s\n", buff );

}

出力例Sample Output

Seconds since midnight, January 1, 1970
My time: 1171588492
GM time (UTC): 1171588492

Local Time: Thu Feb 15 17:14:52 2007

Greenwich Mean Time: Fri Feb 16 01:14:52 2007

未完成の構造体に曜日と年通算日の計算値を入力する例を次に示します。The following example shows how the incomplete structure is filled out with the computed values of the day of the week and the day of the year.

// crt_mkgmtime2.c
#include <stdio.h>
#include <time.h>
#include <memory.h>

int main()
{
    struct tm t1, t2;
    time_t gmtime;
    char buff[30];

    memset(&t1, 0, sizeof(struct tm));
    memset(&t2, 0, sizeof(struct tm));

    t1.tm_mon = 1;
    t1.tm_isdst = 0;
    t1.tm_year = 103;
    t1.tm_mday = 12;

    // The day of the week and year will be incorrect in the output here.
    asctime_s( buff, sizeof(buff), &t1);
    printf("Before calling _mkgmtime, t1 = %s t.tm_yday = %d\n",
            buff, t1.tm_yday );

    gmtime = _mkgmtime(&t1);

    // The correct day of the week and year were determined.
    asctime_s( buff, sizeof(buff), &t1);
    printf("After calling _mkgmtime, t1 = %s t.tm_yday = %d\n",
            buff, t1.tm_yday );

}

出力Output

Before calling _mkgmtime, t1 = Sun Feb 12 00:00:00 2003
t.tm_yday = 0
After calling _mkgmtime, t1 = Wed Feb 12 00:00:00 2003
t.tm_yday = 42

関連項目See also

時間管理Time Management
asctime、_wasctimeasctime, _wasctime
asctime_s、_wasctime_sasctime_s, _wasctime_s
gmtime、_gmtime32、_gmtime64gmtime, _gmtime32, _gmtime64
gmtime_s、_gmtime32_s、_gmtime64_sgmtime_s, _gmtime32_s, _gmtime64_s
localtime_s、_localtime32_s、_localtime64_slocaltime_s, _localtime32_s, _localtime64_s
mktime、_mktime32、_mktime64mktime, _mktime32, _mktime64
time、_time32、_time64time, _time32, _time64