1. 程式人生 > >C庫函式-localtime()

C庫函式-localtime()

在Visual Studio 2015裡使用localtime函式報錯C4996提示localtime函式不安全,推薦使用localtime_s代替。

Visual Studio 2010極其以後的版本,新增了安全函式,改成localtime_s(),語法格式也發生了變化:

errno_t localtime_s(struct tm* _tm,consttime_t*time 
);

其中:

_tm
指向要填充的時間結構的指標。
time
指標,指向儲存的時間。如果成功,返回值則為零。如果失敗,返回值將是錯誤程式碼。錯誤程式碼是在Errno.h 中定義的。結構型別的欄位 tm 儲存下面的值,其中每個為int
tm_sec 分鐘後的幾秒(0-59)。 tm_min 小時後的分鐘(0-59)。 tm_hour 午夜後經過的小時(0-23)。 tm_mday (1-31)天。 tm_mon (011;年1=0)。 tm_year 年份(當前年份減去1900年)。 tm_wday 星期幾(06;星期日=0)。 tm_yday 每年的一天(0-365;11=0)。 tm_isdst 如果夏令時有效,則為,正值夏時制不起作用;如果為0如果夏時制的狀態是未知的負值。如果 TZ 設定環境變數,C 執行庫會假定規則適用於美國境內用於實現夏令時(DST)計算。

下面以一個Visual Studio 2015例項來輸出當地日期與時間:

#include<iostream>#include<ctime>usingnamespace std;int main(void){struct tm t;//tm結構指標time_t now;//宣告time_t型別變數
    time(&now);//獲取系統日期和時間
    localtime_s(&t,&now);//獲取當地日期和時間//格式化輸出本地時間
    printf("年:%d\n", t.tm_year +1900);
    printf("月:%d\n", t.tm_mon +1);
    printf("日:%d\n", t.tm_mday
);     printf("星期:%d\n", t.tm_wday);     printf("一年中:%d\n", t.tm_yday);     printf("時:%d\n", t.tm_hour);     printf("分:%d\n", t.tm_min);     printf("秒:%d\n", t.tm_sec);     printf("夏令時:%d\n", t.tm_isdst);     system("pause");return0;}