mktime、_mktime32、_mktime64
予定表の値にローカル時刻を変換します。
time_t mktime(
struct tm *timeptr
);
__time32_t _mktime32(
struct tm *timeptr
);
__time64_t _mktime64(
struct tm *timeptr
);
パラメーター
- timeptr
構造体をタイムアウト ポインター; asctimeを参照してください。
戻り値
_mktime32 は 型 time_tの値としてエンコード指定される予定表の時間を返します。timeptr が 、深夜 1970 年 1 月 1 日 1 以前の日付を参照するか、予定表の時刻を表すことができない場合はmktime32 _– time_tを入力するためのキャスト 1 を返します。_mktime32 を使用する場合、 timeptr が 03:14 後の日付を参照する場合: 1 年 1 月 07 日 19 時 2038 の世界 (UTC)協定時刻 ( time_tを入力するようキャスト 1 を返します。
_mktime64 は timeptr が 23:59 後の日付を参照します。 __time64_t を入力するためのキャスト 1 を返します: 59、 3000 12 年 1 月 31 日の UTC。
解説
次に mktime、 _mktime32 と _mktime64 の関数は time_t の予定表の時刻の値への正規化された値と変換を持つ完全に定義された構造に timeptr によって、指す指定された時間の構造 (不完全な)に変換します。変換された時間に値が返されるまでに関数のと同じエンコーディングがあります。timeptr の 構造体の tm_wday と tm_yday のコンポーネントの元の値は無視され、他のコンポーネントの元の値が正常範囲に限定されません。
mktime は _mktime32と同じである場合は _USE_32BIT_TIME_T が定義されていない場合、 _mktime64と等価のインライン関数です。
UTC に対する調整の後で、 _のmktime32 ハンドルは、深夜 1970 年 1 月 1 日 1 に、日 03:14: 07、 2038 年 1 月 1 日 19。_mktime64 ハンドルは、深夜 1970 年 1 月 1 日 1 への日 23:59: 59、 3000 12 年 12 月 31 日。指定した日付が特定の範囲内にある場合でも、この調整により、これらの関数は -1 を返しますがあります。 time_t、 __time32_t または __time64_tへのキャスト)。たとえば、カイロにある場合、エジプトは、 timeptrで指定した日付から UTC より 2 時間である 2 時間最初に減算; これは、範囲から、日付を配置する場合があります。
これらの関数は tm の構造を検証し、入力するために使用されることがあります。成功すると、これらの関数は適切と定数として他のコンポーネント正常範囲に強制変換された値で指定予定表の時間を表すために tm_wday と tm_yday の値を設定します。tm_mday の最終値は tm_mon と tm_year を決定するまで設定されません。tm の構造のタイミングを指定した場合、 tm_isdst フィールドをに設定します:
標準時間を適用することを示すゼロ (0)。
夏時間を適用することを示すことの値が 0。
標準時間または夏時間が有効かどうかを示す値より小さい 15 C ランタイム ライブラリ コード計算を持つより大きい。
15 C ランタイム ライブラリは TZ の環境変数から夏時間の動作を決定します。TZ が設定されていない場合、オペレーティング システムから夏の時刻の情報を取得するために、 Win32 API の呼び出し GetTimeZoneInformation が使用されます。これが失敗すると、ライブラリは、夏時間の計算を実行するための米国の規則が使用されることを前提としています。tm_isdst は 、必須フィールドです。設定しない場合、値は定義されず、これらの関数の戻り値は予測できません。tm の構造体への timeptr 点が asctime、以前の呼び出しによって、 gmtime、または localtime (またはこれらの関数のバリアント)返された場合は、 tm_isdst フィールドに正しい値が含まれます。
gmtime と localtime (および _gmtime32、 _gmtime64、 _localtime32と _localtime64変換の場合)スレッドごとに一つのバッファーを使用することに注意してください。mktime、 _mktime32 または _mktime64にこのバッファーを指定すると、前の内容は破棄されます。
これらの関数は、パラメーターを検証します。timeptr が null ポインターの場合、無効なパラメーター ハンドラーは、 " " に説明されているように呼び出されます パラメーターの検証。実行の継続が許可された場合、関数は -1 を返し、errno を EINVAL に設定します。
必要条件
ルーチン |
必須ヘッダー |
---|---|
mktime |
<time.h> |
_mktime32 |
<time.h> |
_mktime64 |
<time.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
ライブラリ
C ランタイム ライブラリのすべてのバージョン。
使用例
// 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" );
}
出力例
Current time is Fri Apr 25 13:34:07 2003
In 20 days the time will be Thu May 15 13:34:07 2003
同等の .NET Framework 関数
System::DateTime::DateTime
参照
関連項目
localtime、_localtime32、_localtime64