共用方式為


localtime,_localtime32 _localtime64

轉換時間值,更正當地時區為準。 這些函式更安全版本都可使用; see localtime_s,_localtime32_s _localtime64_s.

struct tm *localtime(
   const time_t *timer 
);
struct tm *_localtime32(
   const __time32_t *timer
);
struct tm *_localtime64(
   const __time64_t *timer 
);

參數

  • timer
    預存時間的指標。

傳回值

這個結構的結果,傳回的指標或NULL傳遞給函數的日期是否:

  • 從 1970 年 1 月 1 日午夜以前

  • 03: 14: 07 以後,2038 年 1 月 19 日,UTC 之後 (使用_time32 和time32_t)。

  • 23: 59: 59,3000 年 12 月 31 UTC 之後 (使用_time64和__time64_t)。

_localtime64使用__time64_t結構,可讓 23: 59: 59 之間,3000 年 12 月 31,時間 (UTC),表示出的日期,而_localtime32代表透過 03: 14: 07 以後 2038 年 1 月 19 日,UTC 日期。

localtime是內嵌函式評估_localtime64,以及time_t相當於__time64_t。 如果您要強制編譯器解譯time_t為舊的 32 位元time_t,您可以定義_USE_32BIT_TIME_T。 如此一來,這會導致localtime估算_localtime32。 建議您不要因為您的應用程式可能會失敗之後 2038 年 1 月 19 日,而且不允許在 64 位元平台上。

結構型別的欄位 tm 儲存下列的值,每一個都是int:

  • tm_sec
    分鐘後的秒數 (0 – 59)。

  • tm_min
    整點小時之後的分鐘 (0 – 59)。

  • tm_hour
    午夜之後的小時 (0-23)。

  • tm_mday
    日期的月份 (1 – 31)。

  • tm_mon
    月份 (0 – 11。 年 1 月 = 0)。

  • tm_year
    年份 (目前年份減 1900年)。

  • tm_wday
    星期幾 (0 – 6。 星期日 = 0)。

  • tm_yday
    年中的日 (0 – 365。 1 月 1 日 = 0)。

  • tm_isdst
    正數值,如果日光節約時間生效。 日光節約時間沒有作用 ; 如果為 0 如果日光節約時間的狀態是未知的負數值。 如果TZ被設定環境變數,那麼 c 執行階段程式庫假設規則適用於美國實作日光節約時間 (DST) 的計算。

備註

localtime函式將轉換儲存成一次 time_t 值,並將結果儲存在結構中的型別tm。 long值timer代表從午夜到現在所經過的秒數 (00: 00: 00)、 1970 年 1 月 1,UTC。 這個值通常取自time函式。

這兩個 32 位元與 64 位元版本的gmtime, mktime, mkgmtime,以及localtime所有使用單一tm每個執行緒要轉換的結構。 每次呼叫其中一個這些常式會終結之前呼叫的結果。

localtime如果使用者第一次設定全域環境變數,如當地時區計算修正TZ。 當TZ設定,其他三個環境變數 (_timezone, _daylight,和_tzname) 也會自動設定。 如果TZ未設定變數, localtime會嘗試使用 [控制台] 中的日期/時間應用程式中所指定的時區資訊。 如果無法取得這項資訊,PST8PDT,其代表太平洋時區,會使用預設值。 請參閱 _tzset 如需這些變數的說明。 TZMicrosoft 擴充功能且不屬於 ANSI 標準解析度的localtime。

注意事項注意事項

目標環境應該嘗試判斷是否日光節約時間生效。

這些函式會驗證它們的參數。 如果timer是空值的指標,或如果計時器值為負數,這些函式叫用無效的參數處理常式中所述參數驗證。 如果執行則允許繼續執行,則函數會傳回NULL ,並設定errno到EINVAL。

需求

常式

所需的標頭

localtime

<time.h>

_localtime32

<time.h>

_localtime64

<time.h>

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

範例

// crt_localtime.cpp
// compile with: /W3
/* This program uses _time64 to get the current time 
 * and then uses localtime64() to convert this time to a structure 
 * representing the local time. The program converts the result 
 * from a 24-hour clock to a 12-hour clock and determines the 
 * proper extension (AM or PM).
 */

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

int main( void )
{
        struct tm *newtime;
        char am_pm[] = "AM";
        __time64_t long_time;

        _time64( &long_time );           // Get time as 64-bit integer.
                                         // Convert to local time.
        newtime = _localtime64( &long_time ); // C4996
        // Note: _localtime64 deprecated; consider _localetime64_s

        if( newtime->tm_hour > 12 )        // Set up extension.
                strcpy_s( am_pm, sizeof(am_pm), "PM" );
        if( newtime->tm_hour > 12 )        // Convert from 24-hour
                newtime->tm_hour -= 12;    //   to 12-hour clock.
        if( newtime->tm_hour == 0 )        // Set hour to 12 if midnight.
                newtime->tm_hour = 12;

        char buff[30];
        asctime_s( buff, sizeof(buff), newtime );
        printf( "%.19s %s\n", buff, am_pm );
}
  

.NET Framework 對等用法

System::DateTime::ToLocalTime

請參閱

參考

時間管理

asctime _wasctime

ctime、 _ctime32、 _ctime64、 _wctime、 _wctime32、 _wctime64

_ftime,_ftime32 _ftime64

gmtime,_gmtime32 _gmtime64

localtime_s,_localtime32_s _localtime64_s

time,_time32 _time64

_tzset