共用方式為


localtime_s,_localtime32_s _localtime64_s

轉換時間值,並更正當地時區為準。 這些是舊版本地時間、 _localtime32、 _localtime64 中所述的安全性增強功能與安全性功能,則在 CRT 中

errno_t localtime_s(
   struct tm* _tm,
   const time_t *time 
);
errno_t _localtime32_s(
   struct tm* _tm,
   const time32_t *time 
);
errno_t _localtime64_s(
   struct tm* _tm,
   const _time64_t *time 
);

參數

  • _tm
    若要填入時間結構指標。

  • time
    預存時間的指標。

傳回值

如果成功的話,則為零。 如果失敗,傳回的值會是一個錯誤碼。 錯誤代碼被定義在 Errno.h 中。 如需這些錯誤的清單,請參閱 errno

錯誤狀況

_tm

time

傳回值

在 [值_tm

叫用無效的參數處理常式

NULL

任何

EINVAL

不能修改

不NULL (指向有效的記憶體)

NULL

EINVAL

所有的欄位設定為-1

不NULL (指向有效的記憶體)

小於 0 或大於_MAX__TIME64_T

EINVAL

所有的欄位設定為-1

如果是第一個的兩個錯誤條件,不正確的參數處理常式會叫用,如所述參數驗證。 如果執行,則允許繼續執行,這些函式會設定errno到EINVAL ,並傳回EINVAL。

備註

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

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

注意事項注意事項

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

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

localtime_s是內嵌函式評估_localtime64_s,以及time_t相當於__time64_t。 如果您要強制編譯器解譯time_t為舊的 32 位元time_t,您可以定義_USE_32BIT_TIME_T。 如此一來,這會導致localtime_s估算_localtime32_s。 建議您不要因為您的應用程式可能會失敗之後 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_s

<time.h>

_localtime32_s

<time.h>

_localtime64_s

<time.h>

如需相容性資訊,請參閱相容性在簡介中。

範例

// crt_localtime_s.c
/* This program uses _time64 to get the current time 
 * and then uses _localtime64_s() 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;
        char timebuf[26];
        errno_t err;

        // Get time as 64-bit integer.
        _time64( &long_time ); 
        // Convert to local time.
        err = _localtime64_s( &newtime, &long_time ); 
        if (err)
        {
            printf("Invalid argument to _localtime64_s.");
            exit(1);
        }
        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;

        // Convert to an ASCII representation. 
        err = asctime_s(timebuf, 26, &newtime);
        if (err)
        {
           printf("Invalid argument to asctime_s.");
           exit(1);
        }
        printf( "%.19s %s\n", timebuf, am_pm );
}

範例輸出

Fri Apr 25 01:19:27 PM

.NET Framework 對等用法

System::DateTime::ToLocalTime

請參閱

參考

時間管理

asctime_s _wasctime_s

ctime、 _ctime32、 _ctime64、 _wctime、 _wctime32、 _wctime64

_ftime,_ftime32 _ftime64

gmtime_s,_gmtime32_s _gmtime64_s

localtime,_localtime32 _localtime64

time,_time32 _time64

_tzset