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