欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

linux下獲取當前時間的相關函數(shù)

 更新時間:2023年09月07日 09:01:59   作者:yun6853992  
這篇文章主要介紹了linux下獲取當前時間的相關函數(shù),具有很好的參考價值,希望對大家有所幫助,

1.可以獲取當前時間的s數(shù)

結構體: time_t

函數(shù)

time_t time(time_t * timer)

2.可以獲取到當前時間的微秒數(shù)

結構體:struct timeval

 struct timeval {
     time_t tv_sec; // seconds
     long tv_usec; // microseconds
 };

函數(shù):

int gettimeofday(struct timeval *tv, struct timezone *tz);

3.可以獲取到當前時間的納秒數(shù)

結構體:struct timespec

 struct timespec {
     time_t tv_sec; // seconds
     long tv_nsec; // and nanoseconds
 };

函數(shù):

int clock_gettime(clockid_t, struct timespec *)獲取特定時鐘的時間:

4.對獲取到的時間做特定的格式化

結構體:

 struct tm {
     int tm_sec;      // Seconds (0-60) 
     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 - 1900;從1900年算起,至今的年份 
     int tm_wday;     // Day of the week (0-6, Sunday = 0) 
     int tm_yday;     // Day in the year (0-365, 1 Jan = 0) 
     int tm_isdst;    // Daylight saving time;干啥用的??? 
 };

轉換函數(shù):

struct tm* localtime_r(const time_t* timer, struct tm* result );//線程安全

格式化函數(shù):

size_t strftime (char* ptr, size_t maxsize, const char* format, const struct tm* timeptr );

5.相關測試代碼

 #include <stdio.h>
 #include <stdlib.h>
 #include <time.h> //time()
 #include <string.h>
 #include <unistd.h>
 #include <stdint.h> //uint64_t
 ?
 #include <sys/time.h> //gettimeofday
 void get_time();
 void get_time1();
 static uint64_t getNowTime();
 int main()
 {
 ?
     // time_t time(time_t * timer)  返回TC1970-1-1 0:0:0開始到現(xiàn)在的秒數(shù)
     // 與相關函數(shù):localtime、gmtime、asctime、ctime,結合可以獲得當前系統(tǒng)時間或是標準時間。
     //  struct tm* gmtime(const time_t *timep);    轉換為沒有經過時區(qū)轉換的UTC時間,是一個struct tm結構指針
     //  stuct tm* localtime(const time_t *timep);  gmtime類似,但是它是經過時區(qū)轉換的時間。
     //  char *asctime(const struct tm* timeptr);   轉換為真實世界的時間,以字符串的形式顯示
     //  char *ctime(const time_t *timep);          轉換為真是世界的時間,以字符串顯示
 ?
     //  int gettimeofday(struct timeval *tv, struct timezone *tz);
     //          返回當前距離1970年的秒數(shù)和微妙數(shù),后面的tz是時區(qū),一般不用
     //  time_t mktime(struct tm* timeptr);         轉換為從1970年至今的秒數(shù)
 ?
     //size_t strftime (char* ptr, size_t maxsize, const char* format, const struct tm* timeptr );
     //          可以通過該函數(shù),對時間進行特定格式的字符串構造,進行時間格式的設置
 //所以,獲取時間一般有兩個函數(shù)time() 和gettimeofday()
 ?
     //time()函數(shù)的測試 兩種使用方法
     time_t time0, time1;
     time0 = time(NULL);
     time(&time1); //獲取當前時間,秒數(shù)
     printf("time() test is %ld = %ld \n", time0, time1);
     printf("ctime() :%s", ctime(&time1)); //直接字符串打印 帶換行的
 ?
     //先用gmtime,沒有經過時區(qū)轉換的時間 只有這里才不會有時區(qū)的轉換  差8小時
     struct tm* g_time = gmtime(&time0);
     printf("asctime(gmtime()) :%s", asctime(g_time)); //轉換為字符串進行打印
     //用localtime 轉換為經過時區(qū)轉換的時間
     struct tm* l_time = localtime(&time0);
     printf("asctime(localtime()) :%s", asctime(l_time)); //轉換為字符串進行打印
 ?
     printf("mktime(g_time) to s :[%ld] \n", mktime(g_time)); //這里默認帶了時區(qū)的轉換
     printf("mktime(l_time) to s :[%ld] \n", mktime(l_time));
 ?
     char tmpbuf[128];
     struct tm* newtime=localtime(&time1);
     //測試相關的格式打印
     strftime( tmpbuf, 128, "Today is %A, day %d of %B in the year %Y.\n", newtime);
     printf("%s \n", tmpbuf);
 ?
     //其他兩個結構體
     get_time();
     get_time1();
     printf("get ms time: %lu \n", getNowTime());
     return 0;
 }
 ?
 /******************
 秒和納秒
 struct timespec {
     time_t tv_sec; // seconds
     long tv_nsec; // and nanoseconds
 };
 int clock_gettime(clockid_t, struct timespec *)獲取特定時鐘的時間:
     CLOCK_REALTIME              統(tǒng)當前時間,從1970年1.1日算起
     CLOCK_MONOTONIC             系統(tǒng)的啟動時間,不能被設置
     CLOCK_PROCESS_CPUTIME_ID    本進程運行時間
     CLOCK_THREAD_CPUTIME_ID     本線程運行時間
 相關函數(shù)
     //把獲得的時間秒數(shù)轉換為struct tm 類型
     struct tm *localtime(const time_t *clock);  //線程不安全
     struct tm* localtime_r(const time_t* timer, struct tm* result );//線程安全
     //格式化時間字符串 
     size_t strftime (char* ptr, size_t maxsize, const char* format, const struct tm* timeptr );
 ?
 秒和微妙
 struct timeval {
     time_t tv_sec; // seconds
     long tv_usec; // microseconds
 };
 int gettimeofday(struct timeval *tv, struct timezone *tz)獲取系統(tǒng)的時間
 ******************/
 //1:clock_gettime 操作timespec結構,返回秒+納秒結構的時間,可以定義時鐘類型
 void get_time()
 {
     struct timespec ts;
     clock_gettime(CLOCK_REALTIME, &ts);
     printf("clock_gettime : tv_sec=%ld, tv_nsec=%ld\n",ts.tv_sec, ts.tv_nsec);
     struct tm t;
     char date_time[64];
     strftime(date_time, sizeof(date_time), "%Y-%m-%d %H:%M:%S", localtime_r(&ts.tv_sec, &t));//只到秒上
     printf("clock_gettime :date_time=%s, tv_nsec=%ld\n", date_time, ts.tv_nsec);
 }
 // 2:gettimeofday 獲取系統(tǒng)時間 這里微妙和納秒可以對結構體操作進行轉換
 //  struct timeval now;
 //  struct timespec outtime;
 //  gettimeofday(&now, NULL);
 //  outtime.tv_sec = now.tv_sec; //s
 //  outtime.tv_nsec = now.tv_usec * 1000; //微妙轉為納秒
 void get_time1()
 {
     struct timeval us;
     gettimeofday(&us,NULL);
     printf("gettimeofday: tv_sec=%ld, tv_usec=%ld\n", us.tv_sec, us.tv_usec);
     struct tm t;
     char date_time[64];
     strftime(date_time, sizeof(date_time), "%Y-%m-%d %H:%M:%S", localtime_r(&us.tv_sec, &t));
     printf("gettimeofday: date_time=%s, tv_usec=%ld\n", date_time, us.tv_usec);
 }
 //獲取當前時間  ms單位
 static uint64_t getNowTime()
 {
     struct timeval tval;
     uint64_t nowTime;
 ?
     gettimeofday(&tval, NULL);
 ?
     nowTime = tval.tv_sec * 1000L + tval.tv_usec / 1000L;
     return nowTime;
 }
 /******************************************
     struct tm {
         int tm_sec;      // Seconds (0-60) 
         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 - 1900;從1900年算起,至今的年份 
         int tm_wday;     // Day of the week (0-6, Sunday = 0) 
         int tm_yday;     // Day in the year (0-365, 1 Jan = 0) 
         int tm_isdst;    // Daylight saving time;干啥用的??? 
     };
 ?
     %a: 英文單詞中星期幾的縮寫版。如:星期三,表示為"Wed"。
 ?   %A: 英文單詞中星期幾的完整版。如:星期三,表示為"Wednesday"。
 ?   %b: 英文單詞中月份的縮寫版。如:11月,表示為"Nov"。
 ?   %B: 英文單詞中月份的縮寫版。如:11月,表示為"November"。
 ?   %c: 格式化的時間字符串。如:2018-11-28 10:13:40,表示為"Wed Nov 28 10:13:40 2018"。
 ?   %F: 日期格式為yyyy-mm-dd,與%Y:%m:%d作用相同。如:2018-11-28。
 ?   %X: 時間格式為hh:mm:ss。如:10:13:40。
 ?   %j: 一年中的第幾天,范圍:001-366.
 ?   %W: 一年中的第幾周,范圍:00-53.
 ?   %Y: 日期中的年,如:2018。
 ?   %m: 日期中的月,范圍:00-12。
 ?   %d: 日期中的天,范圍:01-31。
 ?   %H: 小時,范圍:00-24。
 ?   %M: 分鐘,范圍:00-59。
 ?   %S: 秒,范圍:00-60。
 ******************************************/

執(zhí)行結果:

time() test is 1623892563 = 1623892563 
ctime() :Thu Jun 17 09:16:03 2021
asctime(gmtime()) :Thu Jun 17 01:16:03 2021
asctime(localtime()) :Thu Jun 17 09:16:03 2021
mktime(g_time) to s :[1623892563] 
mktime(l_time) to s :[1623892563] 
Today is Thursday, day 17 of June in the year 2021.
 
clock_gettime : tv_sec=1623892563, tv_nsec=702520168
clock_gettime :date_time=2021-06-17 09:16:03, tv_nsec=702520168
gettimeofday: tv_sec=1623892563, tv_usec=702558
gettimeofday: date_time=2021-06-17 09:16:03, tv_usec=702558
get ms time: 1623892563702 

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Linux堆內存修改及清理命令方式

    Linux堆內存修改及清理命令方式

    這篇文章主要介紹了Linux堆內存修改及清理命令方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • linux下統(tǒng)計appche站點IP訪問量的shell腳本

    linux下統(tǒng)計appche站點IP訪問量的shell腳本

    這篇文章主要介紹了linux下統(tǒng)計appche站點IP訪問量的幾種shell腳本以及執(zhí)行結果
    2014-06-06
  • 如何在Linux下設置錄音筆時間

    如何在Linux下設置錄音筆時間

    這篇文章主要介紹了如何在Linux下設置錄音筆時間的方法,有這方面需要的朋友跟著學習下吧。
    2017-12-12
  • apache tomcat 一個網站多域名的實現(xiàn)方法

    apache tomcat 一個網站多域名的實現(xiàn)方法

    因此處是進行多域名設置,所以 Apache 與 tomcat的結合沒有詳述,此處只是設置多域名的方法
    2009-02-02
  • Linux下apache如何限制并發(fā)連接和下載速度

    Linux下apache如何限制并發(fā)連接和下載速度

    在Linux下限值Apache的并發(fā)連接數(shù)和下載速度需要用到一款Apache的擴展模塊mod_limitipconn,下面我們就來討論mod_limitipconn的安裝使用方法
    2014-11-11
  • 11個有用的Linux命令

    11個有用的Linux命令

    Linux命令行吸引了大多數(shù)Linux愛好者。一個正常的Linux用戶一般掌握大約50-60個命令來處理每日的任務。今天為你解釋下面幾個命令:sudo、python、mtr、Ctrl+x+e、nl、shuf、shuf、last。
    2013-10-10
  • apache啟用gzip壓縮的實現(xiàn)方法

    apache啟用gzip壓縮的實現(xiàn)方法

    對于部署在Linux服務器上的PHP程序,在服務器支持的情況下,我們建議你開啟使用Gzip Web壓縮,以前腳本之家介紹了iis中的開啟方法,這篇文章主要介紹了linux中apache的開啟方法
    2013-06-06
  • centos源碼編譯php5 mcrypt模塊步驟詳解

    centos源碼編譯php5 mcrypt模塊步驟詳解

    服務器安裝的是php5.3版本,源中沒有包含mcrypt擴展,只有自己從源碼中編譯mcrypt模塊了,看下面的詳細步驟
    2013-12-12
  • 配置Linux服務器SSH 安全訪問的四個小技巧

    配置Linux服務器SSH 安全訪問的四個小技巧

    越來越多的站長,開始使用獨立主機(Dedicated Host)和 VPS。而為了節(jié)省成本或提高性能,不少人的獨機和 VPS,都是基于 unmanaged 的裸機,一切都要自己 DIY。這時候,安全策略的實施,就猶為重要。
    2010-12-12
  • CentOS MySQL 5.7編譯安裝步驟詳細說明

    CentOS MySQL 5.7編譯安裝步驟詳細說明

    這篇文章主要介紹了CentOS MySQL 5.7編譯安裝詳細介紹的相關資料,這里對安裝步驟進行了詳細介紹,需要的朋友可以參考下
    2016-12-12

最新評論