共用方式為


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 日,午夜以前的日期或行事曆時間不可以是代表的 _mktime32 會傳回 – 1 轉換成輸入time_t。 當使用 _mktime32 則為由右 timeptr 參考的 03: 14: 07 以後 2038 年 1 月 19 日,時間 (UTC) 之後的日期則會傳回 – 1 轉換成輸入time_t

_mktime64會傳回 – 1 轉換成輸入 __time64_t 如果 timeptr 參考 23: 59: 59,3000 年 12 月 31 UTC 之後的日期。

備註

mktime_mktime32_mktime64 函式轉換提供的時間結構(可能是不完整) 所指 timeptr 成完整定義的結構與標準化的值,然後將它轉換time_t時間值的行事曆。 轉換後的時間有相同編碼所傳回的值為時間函式。 原始值 tm_wdaytm_yday 元件的 timeptr結構都會被忽略,和其他元件的原始值並不限於其正常範圍。

mktime是一個內嵌函式,等於是**_mktime64**,除非您 _USE_32BIT_TIME_T 定義,而大小寫相當於 _mktime32

在 [調整成 UTC,_ 之後mktime32 控點日期從 1970 年 1 月 1 日午夜 03: 14: 07 以後,2038 年 1 月 19 日。 _mktime64處理從 1970 年 1 月 1 日到 23: 59: 59,3000 年 12 月 31,午夜的日期。 這項調整可能會造成這些函式來傳回-1 (轉換成time_t__time32_t__time64_t) 即使您所指定的日期範圍內。 比方說,如果您位於開羅,埃及,也就是兩個小時的 UTC 之前,兩個小時會先減所指定的日期 timeptr。 這可能會套用您的日期超出範圍。

這些函式可能會用來驗證,並填入 tm結構。 如果成功,這些函式設定的值 tm_wdaytm_yday 視需要和設定來表示指定的行事曆時,其他的元件,但它們的值與強制一般範圍。 最後的數值 tm_mday 之前沒有設定 tm_montm_year 所決定。 當指定 tm 結構時,設定 tm_isdst欄位:

  • 零 (0) 則表示標準時間為作用中。

  • 大於 0 表示日光節約時間是有效的值。

  • 值小於零到 c 執行階段文件庫程式碼來計算標準時間或日光節約時間是否有效。

C 執行階段文件庫將會決定從日光節約時間行為 TZ環境變數。 如果 TZ 尚未設定,Win32API 呼叫GetTimeZoneInformation 用來從系統取得日光節約時間資訊。 如果失敗,文件庫會假設使用美國的規則實作日光節約時間的計算。 tm_isdst 是必要的欄位。 如果沒有設定,它的值是未定義,且這些函式中的傳回值將會無法預測。 如果 timeptr 指向 tm的先前呼叫所傳回的結構asctimegmtime,或localtime (或玩法的這些函式), tm_isdst欄位包含正確的值。

請注意, gmtimelocaltime (與**_gmtime32**, _gmtime64_localtime32,以及**_localtime64**) 轉換使用單一的緩衝區,每個執行緒。 如果您提供此緩衝區mktime_mktime32 或**_mktime64**,先前的內容已終結。

這些函式驗證他們的參數。 如果 timeptr null指標,不正確的參數處理常式會叫用,如所述參數驗證。 若要繼續,允許執行,函數會傳回-1,並設定errnoEINVAL

需求

常式

所需的標題

mktime

<time.h>

_mktime32

<time.h>

_mktime64

<time.h>

其他的相容性資訊,請參閱相容性在簡介中。

文件庫

所有版本的 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

請參閱

參考

時間管理

asctime _wasctime

gmtime,_gmtime32 _gmtime64

localtime,_localtime32 _localtime64

_mkgmtime,_mkgmtime32 _mkgmtime64

time,_time32 _time64