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 對等用法
請參閱
參考
ctime、 _ctime32、 _ctime64、 _wctime、 _wctime32、 _wctime64