日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 时间戳 c语言,c语言中的时间戳和时间格式

發布時間:2025/4/5 linux 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 时间戳 c语言,c语言中的时间戳和时间格式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0、讀取系統毫秒級時間long getCurrentTime()

{

struct timeval tv;

gettimeofday(&tv,NULL);

return tv.tv_sec * 1000 + tv.tv_usec / 1000;

}

1、時間戳(秒級)

在Linux系統中,時間戳是一個絕對值,表示距離時間(1970-1-1, 00:00:00)的秒數。在C\C++ 語言中,用數據類型time_t 表示時間戳,time_t 本質上是一個long int。獲取當前時間的時間戳代碼如下所示:#include

#include

int main(int argc, const char * argv[])

{

time_t now;

time(&now);

printf("now:%ld",now);

}

上面程序打印出的數據為“now:1470918308” ;1470918308表示當前時間距離格林威治時間的秒數;在shell終端下命令 "date -d @1470918308 " 打印出這個時間戳的日期格式為Thu Aug 11 20:22:47 CST 2016。

2、如何將時間戳轉換成特定的時間格式

經常碰到的一個問題是將一個時間戳顯示成指定的顯示格式,比如講上面的時間顯示為2016-8-11。C/C++ 語言中,和時間操作相關的關鍵數據結構是struc tm,其定義如下:struct tm {

int tm_sec;? ? ? ? /* seconds ?0-59*/

int tm_min;? ? ? ? /* minutes 0-59*/

int tm_hour;? ? ? ? /* hours 0-23*/

int tm_mday;? ? ? ? /* day of the month 1-31*/

int tm_mon;? ? ? ? /* month 0-11*/

int tm_year;? ? ? ? /* year *距離1990的年數/

int tm_wday;? ? ? ? /* day of the week 0-6*/

int tm_yday;? ? ? ? /* day in the year 0-365*/

int tm_isdst;? ? ? /* daylight saving time */

};

在將時間戳表示成指定格式前,我們需要將時間戳轉換成tm數據結構。C/C++提供了倆個函數struct tm *gmtime(const time_t *timep) 和struct tm *localtime(const time_t *timep); 其中gtime轉換后的tm是基于時區0的,而localtime轉換后的是基于當地時區【中國為時區8】;因為同一時間戳在不同地區的表示時間是不一樣的【因為時區不一樣】。我們便可利用經過localtime轉換后的tm展示當前時間了,tim_mo+1、tm_year+1990后才是我們想要看到的時間。我們也可以利用接口 size_t strftime(char *s, size_t max, const char *format,const struct tm *tm) 來定制我們的時間格式。#include

#include

int main(int argc, const char * argv[])

{

time_t t;

time(&t);

struct tm *tmp_time = localtime(&t);

char s[100];

strftime(s, sizeof(s), "%04Y%02m%02d %H:%M:%S", tmp_time);

printf("%d: %s\n", (int)t, s);

return 0;

}

上面程序輸出的數據為:1470919776: 20160811 20:49:36。因此利用strftime我們可以隨意定制化顯示時間。

3、如何將時間格式轉換時間戳

有時候我們并不是想得到當前時間戳(time(&t)),而是希望將特定時間格式轉換成時間戳,比如計算2016/8/13的時間戳是多少。C/C++提供char *strptime(const char *s, const char *format, struct tm *tm);將時間格式字符串S按指定格式foramt解析成tm; 再用time_t mktime(struct tm *tm)函數將tm生成時間戳。例如程序打印2016/08/13的時間戳。#include

#include

int main(int argc, const char * argv[])

{

struct tm* tmp_time = (struct tm*)malloc(sizeof(struct tm));

strptime("2016/08/13/06/12","%Y/%m/%d/%H/%M",tmp_time); //按當地時區將2016/08/13/06/12解析成tmp_time

time_t t = mktime(tmp_time);//按當地時區解析tmp_time

printf("%ld\n",t);

free(tmp_time);

}

總結

以上是生活随笔為你收集整理的linux 时间戳 c语言,c语言中的时间戳和时间格式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。