大家在平時的項目中,一定經(jīng)常面臨打日志信息的問題,在打日志這個問題上,大家有時一定會非常關(guān)注【時間戳】這個信息點。
想必大家也很經(jīng)常使用【gettimeofday】接口來獲取當(dāng)前的系統(tǒng)時間,但是很遺憾的是,它獲取的時間信息是存儲在一個叫strcut timeval的結(jié)構(gòu)體中。那么如何將這個結(jié)構(gòu)體的時間信息轉(zhuǎn)換為可是顯示的時間字符串呢?
比如顯示 "2018-12-10 20:52:00"。本文就將給你答案,直接附上代碼:
#include
#include
#include
#include
//由struct timeval結(jié)構(gòu)體數(shù)據(jù)(由gettimeofday獲取到的)轉(zhuǎn)換成可顯示的時間字符串
static char * get_local_time(char *time_str, int len, struct timeval *tv)
{
struct tm* ptm;
char time_string[40];
long milliseconds;
ptm = localtime (&(tv->tv_sec));
/* 格式化日期和時間,精確到秒為單位。*/
//strftime (time_string, sizeof(time_string), "%Y/%m/%d %H:%M:%S", ptm); //輸出格式為: 2018/12/09 10:48:31.391
//strftime (time_string, sizeof(time_string), "%Y|%m|%d %H-%M-%S", ptm); //輸出格式為: 2018|12|09 10-52-28.302
//strftime (time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", ptm); //輸出格式為: 2018-12-09 10:52:57.200
strftime (time_string, sizeof(time_string), "%Y\\%m\\%d %H-%M-%S", ptm); //輸出格式為: 2018\12\09 10-52-28.302
/* 從微秒計算毫秒。*/
milliseconds = tv->tv_usec / 1000;
/* 以秒為單位打印格式化后的時間日期,小數(shù)點后為毫秒。*/
snprintf (time_str, len, "%s.%03ld", time_string, milliseconds);
return time_str;
}
int main(int argc, const char **argv)
{
char local_time_str[128];
char *p = NULL;
struct timeval tv;
gettimeofday(&tv, NULL);
p = get_local_time(local_time_str, sizeof(local_time_str), &tv);
printf("Get local time: \n%s\n", p);
return 0;
}
編譯代碼,輸入:
gcc -o time_string_format time_string_format.c
測試結(jié)果如下:

上文的示例代碼中,給出了好幾種打印時間戳格式的示例,筆者只演示了其他的一種,其他的幾種,有待讀者親自去驗證。驗證的過程中,如果有發(fā)現(xiàn)什么問題,可隨時與我聯(lián)系。
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
字符串
+關(guān)注
關(guān)注
1文章
596瀏覽量
23165 -
代碼
+關(guān)注
關(guān)注
30文章
4968瀏覽量
73966 -
結(jié)構(gòu)體
+關(guān)注
關(guān)注
1文章
131瀏覽量
11372
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
字符串的表示
字符串的表示 隨著計算機在文字處理與信息管理中的廣泛應(yīng)用, 字符串已成為最常用的數(shù)據(jù)類型之一, 許多計算機中都提供字符串操作功能, 一些計算機還給出讀寫字
發(fā)表于 10-13 17:11
?3544次閱讀
字符與字符串的顯示原理
字符與字符串的顯示原理
1.字符的表示方法 現(xiàn)代計算機不僅處理數(shù)值領(lǐng)域的問題,而且處理大量非數(shù)值領(lǐng)域的問題。這樣一來,必然要
發(fā)表于 04-13 11:38
?1.1w次閱讀
字符串移位包含的問題解決方案
問題:給定字符串s和t,判斷是否字符串t能通過將s移位后的字符串所包含。 方法一 最簡單的方法就是將s進行循環(huán)移位,再判斷移位后的
發(fā)表于 11-29 10:05
?1242次閱讀
LabVIEW的常用字符串操作教程免費下載
字符串操作與信息的保存和顯示密不可分,而字符串操作運用也是LabⅥEW程序設(shè)計的一個難點,因此熟練使用字符串操作函數(shù)是使用LabⅥEW進行編程所必備的能力之
發(fā)表于 08-21 14:51
?27次下載
什么是復(fù)制字符串?Python如何復(fù)制字符串
。 在上一篇文章《你真的知道Python的字符串怎么用嗎?》里,我突發(fā)奇想,將字符串跟列表做了比較,然后發(fā)現(xiàn)字符串竟然沒有復(fù)制的方法。當(dāng)時沒有細想,只說要擱置疑問。過后,有好學(xué)的小伙伴
發(fā)表于 11-25 10:32
?3523次閱讀
字符串函數(shù)重寫練習(xí)
字符串函數(shù)重寫練習(xí):字符串比較、字符串拼接、字符串查找、字符串拷貝、內(nèi)存比較、內(nèi)存拷貝、內(nèi)存初始化、內(nèi)存比較、二維數(shù)組定義及基本使用、位運算
C語言總結(jié)_字符串全方位練習(xí)
C語言字符串全方位練習(xí),涉及知識點:字符串解析、大小寫判斷、字符串插入、字符串刪除、字符串排序、字符串
一文詳解JavaScript字符串
JavaScript字符串是原始值。此外,字符串是不可變的。這意味著如果你修改一個字符串,你總是會得到一個新的字符串。原始字符串不會被改變。
python字符串有哪些特定方法
python字符串序列操作也適用于列表和元組。
python字符串還有獨有方法,即字符串對象的函數(shù),其他對象不可調(diào)用,只有字符串對象可調(diào)用。
字符串的相關(guān)知識
TCL 中的數(shù)據(jù)類型只有一種:字符串。這些字符串可以是字母、數(shù)字、布爾值、標(biāo)點符號等特殊字符的組合。在某些特殊命令的作用下,字符串可以向其他數(shù)據(jù)類型轉(zhuǎn)換。下面
labview字符串如何轉(zhuǎn)換為16進制字符串
在LabVIEW中,將字符串轉(zhuǎn)換為16進制字符串是一個常見的需求,尤其是在處理數(shù)據(jù)通信和硬件接口時。LabVIEW提供了多種方法來實現(xiàn)這一轉(zhuǎn)換,包括使用內(nèi)置函數(shù)、編寫VI(Virtual
字符串反轉(zhuǎn)的實現(xiàn)方式
在編程中,字符串反轉(zhuǎn)是一個基礎(chǔ)而重要的操作,它涉及到將一個字符串中的字符順序顛倒過來。這個操作在多種編程語言中都有不同的實現(xiàn)方式,本文將探討
字符串在編程中的應(yīng)用實例
字符串在編程中有著廣泛的應(yīng)用,它們被用于表示文本數(shù)據(jù)、處理用戶輸入、構(gòu)建動態(tài)內(nèi)容等。以下是一些字符串在編程中的應(yīng)用實例: 1. 用戶輸入與輸出 用戶輸入 :程序通常需要從用戶那里獲取輸入,這些輸入通
【技巧】將gettimeofday獲取可顯示的字符串時間?
評論