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

歡迎訪問 生活随笔!

生活随笔

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

linux

linux c语言获取时间

發布時間:2023/12/9 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux c语言获取时间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在程序中,經常需要輸出系統的當前時間、計算程序的執行時間、使用計時器等。

一、時間的類型

1.格林威治標準時間

coordinated universal time(UTC)是世界標準時間,即常說的格林威治標準時間(greenwich mean time,GMT).

2.日歷時間

日歷時間(calendar time)是用"一個標準時間點(如1970年1月1日0點)到此時經過的秒數"來表示的時間.

二、時間函數的API

時間函數的API均屬于系統調用函數.。

1.獲取日歷時間

??#include <time.h>

??time_t time(time_t *tloc)

??函數功能:獲取日歷時間,即從1970年1月1日0點到現在所經歷的秒數.

??參數:通常設置為NULL

(time_t在time.h中定義:typedef long int time_t)

??例:

??#include <time.h>

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

??{

?????int seconds=0;

?????seconds = time(NULL);

?????printf("seconds=%d\n",seconds);

?}

執行結果:

[root@localhost Time]# ./time

seconds=1294908511

通常用戶得到日歷時間的秒數沒有實際的意義,但可以為時間轉化做一些鋪墊性質的工作.為了更好的利用時間,用戶需要將這些秒數轉化為更容易接受的時間表示方式,這些表示時間的方式有格林威治時間、本地時間等.

2.將日歷時間轉換為格林威治標準時間

???struct tm *gmtime(const time_t *timep)

???函數功能:將日歷時間轉化為格林威治標準時間,并保存在tm結構

???參數:日歷時間的返回值

3.將日歷時間轉化為本地時間

???struct tm* localtime(const time_t *timep)

???函數功能:將日歷時間轉化為本地時間,并保存至tm結構

???參數:日歷時間的返回值

??由上面兩個函數可以看出,這兩個函數的返回值均存放在tm結構中,具體的tm結構如下:

???struct tm

???{

??????int tm_sec;???//秒值

??????int tm_min;???//分鐘值

??????int tm_hour;??//小時值

??????int tm_mday;??//本月第幾日

??????int tm_mon;???//本年第幾月

??????int tm_year;??//tm_year+1900=哪一年

??????int tm_wday;??//本周第幾日

??????int tm_yday;??//本年第幾日

??????int tm_isdst; //日光節約時間

???}

???建立time.c

???#include <stdio.h>

???#include <time.h>

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

???{

 struct tm *local;

?????time_t t;

?????t = time(null);???//獲取日歷時間

?????local = localtime(&t);??//將日歷時間轉化為本地時間,并保存在struct tm結構中

?????printf("local hour is :%d\n",local->tm_hour);

?????local = gmtime(&t);??//將日歷時間轉化為格林威治時間,并保存在struct tm結構中

?????printf("utc hour is :%d\n",local->tm_hour);

?????return 0;

???}

???執行結果:

[root@localhost Time]# gcc –o time time.c

[root@localhost Time]# ./time

Local hour is: 0

UTC hour is: 8

[root@localhost Time]# date

Thu Jan 13 00:52:44 PST 2011

?利用函數gmtime()、localtime()可以將日歷時間轉化為格林威治時間和本地時間,雖然用戶可通過結構體tm來獲取

這些時間值,但看起來還不方便,最好是將所有的信息,如年、月、日、星期、時、分、秒以字符串的形式顯示出來,

這樣就加直觀.

4.時間顯示

???char *asctime(const struct tm *tm)

???函數功能:將tm格式的時間轉化為字符串

???參數:日歷時間的返回值

???例如:?SAT Jul 30 08:43:03 2005

該函數較ctime()使用起來更加的復雜.必須按照下面3個步驟來進行.

???<1>使用函數time()來獲取日歷時間

???<2>使用函數gmtime()將日歷時間轉化為格林威治標準時間

???<3>使用函數asctime()將tm格式的時間轉化為字符串

???例程:

????#include <time.h>

????#include <stdio.h>

????int main(void)

???{

??????struct tm *ptr;

??????time_t lt;

??????lt=time(null);?

??????ptr=gmtime(&lt);

??????printf(asctime(ptr));

??????printf(ctime(&lt));

??????return 0;

???}

???char *ctime(const time_t *timep)

???函數功能:將日歷時間轉化為本地時間的字符串形式

???參數:日歷時間的返回值

???該函數較asctime()使用起來更加簡單.必須按照下面2個步驟來進行.

???<1>使用函數time()來獲取日歷時間

???<2>使用函數ctime()將日歷時間直接轉化為字符串

??5.獲取從今日凌晨到現在的時間差

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

???函數功能:獲取從今日凌晨(0:0:0)到現在的時間差,常用于計算事件耗時

???參數1:存放從今日凌晨(0:0:0)到現在的時間差,時間差以秒或微秒為單位,以結構體形式存放

?????????struct timeval

????????{

???????????int tv_sec;????//秒數

???????????int tv_usec;???//微秒數

????????}

???參數2:常設置為null

???函數用法:可以在做某件事情之前調用gettimeofday(),在做完該件事情之后調用gettimeofday(),兩個函數的參數1

的差就是做該事情所消耗的時間.

???例程:計算函數function()的耗時

????time.c

????#include <sys/time.h>

????#include <stdio.h>

????#include <stdlib.h>

????#include <math.h>

????void function()??

???{

??????unsigned int i,j;

??????double y;

??????for(i=0;i<1000;i++)

????????for(j=0;j<1000;j++)

?????????y++;

???}

???void main()

??{

??????struct timeval tpstart,tpend;

??????float timeuse;

??????gettimeofday(&tpstart,null); // 開始時間

??????function();

??????gettimeofday(&tpend,null);???// 結束時間

??// 計算執行時間,以微秒為單位進行計算

??????timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+tpend.tv_usec-tpstart.tv_usec;

??????timeuse/=1000000;

??????printf("used time:%f\n",timeuse);

??????exit(0);

??}

?執行結果:

?[root@localhost lishuai]# gcc time.c -o time -wall

?[root@localhost lishuai]# ./time

????use time:0.006288

6.延時函數

???<1>使程序睡眠seconds秒

??????unsigned int sleep(unsigned int seconds)

???函數功能:使程序睡眠seconds秒

???參數:需要休眠的秒數

???<2>使程序睡眠usec微秒

??????void usleep(unsigned long usec)

???函數功能:使程序睡眠usec微秒

???參數:需要休眠的秒數

轉載于:https://www.cnblogs.com/Charles-Zhang-Blog/archive/2013/05/10/3071229.html

總結

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

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