mktime、_mktime32、_mktime64mktime, _mktime32, _mktime64

現地時刻をカレンダーの値に変換します。Convert the local time to a calendar value.

構文Syntax

time_t mktime(
   struct tm *timeptr
);
__time32_t _mktime32(
   struct tm *timeptr
);
__time64_t _mktime64(
   struct tm *timeptr
);

パラメーターParameters

timeptrtimeptr
時間構造体へのポインター。「asctime」をご覧ください。Pointer to time structure; see asctime.

戻り値Return Value

_mktime32型の値としてエンコードされた指定されたカレンダー時間を返しますtime_tします。_mktime32 returns the specified calendar time encoded as a value of type time_t. 場合timeptr午前 0 時、1970 年 1 月 1 日より前に、の日付を参照する場合は、カレンダー時間を表すことができない、または _mktime32型にキャストする-1 を返しますtime_tIf timeptr references a date before midnight, January 1, 1970, or if the calendar time cannot be represented, _mktime32 returns -1 cast to type time_t. 使用する場合 _mktime32場合timeptr 23時 59分: 59 以後 2038 年 1 月 18 日、世界協定時刻 (UTC) 日付を参照型にキャスト-1 を返すtime_tします。When using _mktime32 and if timeptr references a date after 23:59:59 January 18, 2038, Coordinated Universal Time (UTC), it will return -1 cast to type time_t.

_mktime64型にキャスト-1 が返されます _ _time64_t場合timeptr UTC 3000 年 12 月 31 日 23時 59分: 59 秒後の日付を参照します。_mktime64 will return -1 cast to type __time64_t if timeptr references a date after 23:59:59, December 31, 3000, UTC.

RemarksRemarks

Mktime_mktime32_mktime64関数は、指定された時間構造体 (不完全な可能性があります) によって示される、変換timeptr正規化された値を持つ完全に定義された構造体にしてに変換し、 time_tカレンダー時間値です。The mktime, _mktime32 and _mktime64 functions convert the supplied time structure (possibly incomplete) pointed to by timeptr into a fully defined structure with normalized values and then converts it to a time_t calendar time value. 変換された時間のエンコーディングは、time 関数によって返される値と同じエンコーディングになります。The converted time has the same encoding as the values returned by the time function. 元の値、 tm_wdaytm_ydayのコンポーネント、 timeptr構造は無視され、その他のコンポーネントの元の値は限定されませんそれぞれの通常の範囲。The original values of the tm_wday and tm_yday components of the timeptr structure are ignored, and the original values of the other components are not restricted to their normal ranges.

mktimeと等価なインライン関数は、 _mktime64がない限り、 _USE_32BIT_TIME_Tが定義されている場合は等しく _mktime32.mktime is an inline function that is equivalent to _mktime64, unless _USE_32BIT_TIME_T is defined, in which case it is equivalent to _mktime32.

UTC への調整後 _mktime32の日付を 1970 年 1 月 1 日、午前 0 時から 2038 年 1 月 18 日 23時 59分: 59 UTC。After an adjustment to UTC, _mktime32 handles dates from midnight, January 1, 1970, to 23:59:59 January 18, 2038, UTC. _mktime64 23時 59分: 59 に 1970 年年 1 月 1 日、午前 0 時から 3000 年 12 月 31 日、日付のハンドル。_mktime64 handles dates from midnight, January 1, 1970 to 23:59:59, December 31, 3000. この調整に-1 を返し、これらの関数が発生する可能性があります (にキャストtime_t_ _time32_tまたは _ _time64_t) 場合でも、指定した日付が範囲内です。This adjustment may cause these functions to return -1 (cast to time_t, __time32_t or __time64_t) even though the date you specify is within range. たとえば、エジプトのカイロにいる場合は、UTC より 2 時間進んでいるので、timeptr で指定した日付から最初に 2 時間が差し引かれます。そのため、日付が範囲外になる可能性があります。For example, if you are in Cairo, Egypt, which is two hours ahead of UTC, two hours will first be subtracted from the date you specify in timeptr; this may now put your date out of range.

これらの関数は、tm 構造体の検証と値の設定に使用されることがあります。These functions may be used to validate and fill in a tm structure. かどうかは成功すると、これらの関数の値を設定tm_wdaytm_ydayとして適切なとを指定されたカレンダー時間を表すその他のコンポーネントの設定がの値は、標準を強制します。範囲です。If successful, these functions set the values of tm_wday and tm_yday as appropriate and set the other components to represent the specified calendar time, but with their values forced to the normal ranges. 最終値tm_mdayまで設定されないtm_montm_year決定されます。The final value of tm_mday is not set until tm_mon and tm_year are determined. 指定するときに、 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 will determine the daylight savings time behavior from the TZ environment variable. 場合TZ 、Win32 API 呼び出しを設定しないGetTimeZoneInformationオペレーティング システムから夏時間の情報を取得するために使用します。If TZ is not set, the Win32 API call GetTimeZoneInformation is used to get the daylight savings time information from the operating system. これが失敗すると、ライブラリは、夏時間の計算の実装にアメリカ合衆国の規則が使用されると見なします。If this fails, the library assumes the United States' rules for implementing the calculation of daylight saving time are used. tm_isdstは必須フィールドです。tm_isdst is a required field. 設定しないと、その値は未定義になり、これらの関数からは予想外の値が返されます。If not set, its value is undefined and the return value from these functions is unpredictable. 場合timeptrを指す、 tm以前の呼び出しによって返される構造体asctimegmtime、またはlocaltime(またはこれらの関数のバリアント)、 tm_isdstフィールドに正しい値が含まれています。If timeptr points to a tm structure returned by a previous call to asctime, gmtime, or localtime (or variants of these functions), the tm_isdst field contains the correct value.

なおgmtimelocaltime (と _gmtime32_gmtime64_localtime32_localtime64) 変換で、スレッドごとに 1 つのバッファーを使用します。Note that gmtime and localtime (and _gmtime32, _gmtime64, _localtime32, and _localtime64) use a single buffer per thread for the conversion. このバッファーを指定する場合mktime_mktime32または _mktime64、以前の内容は破棄されます。If you supply this buffer to mktime, _mktime32 or _mktime64, the previous contents are destroyed.

これらの関数では、パラメーターの検証が行われます。These functions validate their parameter. timeptr が null ポインターである場合は、「パラメータの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。If timeptr is a null pointer, the invalid parameter handler is invoked, as described in Parameter Validation. 実行の継続が許可された場合、関数は-1 を返し設定とerrnoEINVALします。If execution is allowed to continue, the functions return -1 and set errno to EINVAL.

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
mktimemktime <time.h><time.h>
_mktime32_mktime32 <time.h><time.h>
_mktime64_mktime64 <time.h><time.h>

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

ライブラリLibraries

C ランタイム ライブラリのすべてのバージョン。All versions of the C run-time libraries.

Example

// crt_mktime.c
/* The example takes a number of days
* as input and returns the time, the current
* date, and the specified number of days.
*/

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

int main( void )
{
   struct tm  when;
   __time64_t now, result;
   int        days;
   char       buff[80];

   time( &now );
   _localtime64_s( &when, &now );
   asctime_s( buff, sizeof(buff), &when );
   printf( "Current time is %s\n", buff );
   days = 20;
   when.tm_mday = when.tm_mday + days;
   if( (result = mktime( &when )) != (time_t)-1 ) {
      asctime_s( buff, sizeof(buff), &when );
      printf( "In %d days the time will be %s\n", days, buff );
   } else
      perror( "mktime failed" );
}

出力例Sample Output

Current time is Fri Apr 25 13:34:07 2003

In 20 days the time will be Thu May 15 13:34:07 2003

関連項目See also

時間管理Time Management
asctime、_wasctimeasctime, _wasctime
gmtime、_gmtime32、_gmtime64gmtime, _gmtime32, _gmtime64
localtime、_localtime32、_localtime64localtime, _localtime32, _localtime64
_mkgmtime、_mkgmtime32、_mkgmtime64_mkgmtime, _mkgmtime32, _mkgmtime64
time、_time32、_time64time, _time32, _time64