一、localtime函數簡介
localtime函數是用來獲取本地時間的,它可以將Unix時間戳轉換為本地時間:年、月、日、時、分、秒等格式,並以結構體的形式返回。它的原型如下:
struct tm * localtime (const time_t * timer);
其中,參數timer是一個指向time_t類型的指針,它表示從1970年1月1日0時0分0秒到現在所經過的秒數。而返回值是一個指向tm結構的指針。
二、獲取當前時間
我們可以使用time函數獲取當前時間戳,再傳入localtime函數中進行轉換,將返回的結果存入結構體中:
time_t t = time(NULL); struct tm *lt = localtime(&t); int year = lt->tm_year + 1900; // 年份要加上1900 int month = lt->tm_mon + 1; // 月份從0開始,所以要加1 int day = lt->tm_mday; int hour = lt->tm_hour; int minute = lt->tm_min; int second = lt->tm_sec;
這裡利用了結構體指針的取值方式,通過“->”符號獲取結構體中的成員。
三、獲取指定時間
我們也可以使用mktime函數將某一特定時間轉換為時間戳,再傳入localtime函數中進行轉換,將返回的結果存入結構體中:
struct tm stm; stm.tm_year = 2022 - 1900; // 年份要減去1900 stm.tm_mon = 8 - 1; // 月份從0開始,所以要減1 stm.tm_mday = 1; stm.tm_hour = 8; stm.tm_min = 30; stm.tm_sec = 0; time_t t = mktime(&stm); struct tm *lt = localtime(&t);
這裡需要注意,年份要減去1900,月份從0開始,所以要減1。
四、獲取格式化時間
我們也可以使用strftime函數將本地時間分解出來的結構體,格式化成指定的字符串:
char str[50]; strftime(str, sizeof(str), "%Y/%m/%d %H:%M:%S", lt); printf("%s\n", str);
這裡使用了strftime函數,第一個參數是存放輸出結果的字符數組,第二個參數是該數組的大小,第三個參數是格式化字符串,第四個參數是指向被格式化的時間結構體的指針。
五、小結
本文針對使用localtime函數獲取本地時間這一主題,從介紹localtime函數、獲取當前時間、獲取指定時間、獲取格式化時間等方面進行了詳細的闡述。對於需要獲取本地時間的應用場景,可以根據自己的需求靈活運用這些方法來實現。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/286012.html