C庫函式-localtime()
阿新 • • 發佈:2019-02-09
在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 月(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)計算。
下面以一個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;}