abstract
在程式中,經常需要輸出系統的當前時間、計算程式的執行時間、使用計時器等。
introduction
一、時間的型別
1.格林威治標準時間
coordinated universal time(utc)是世界標準時間,即常說的格林威治標準時間(greenwich mean time,gmt).
2.日曆時間
日曆時間(calendar time)是用"乙個標準時間點(如2023年1月1日0點)到此時經過的秒數"來表示的時間.
二、時間函式的api
時間函式的api均屬於系統呼叫函式.。
1.獲取日曆時間
#include
time_t time(time_t *tloc)
函式功能:獲取日曆時間,即從2023年1月1日0點到現在所經歷的秒數.
引數:通常設定為null
(time_t在time.h中定義:typedef long int time_t)
例:#include
void main()
執行結果:
[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
建立time1.c
#include
#include
int main(void)
執行結果:
[root@localhost time]# gcc time1.c -o time1
[root@localhost time]# ./time1
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
#include
int main(void)
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
引數2:常設定為null
函式用法:可以在做某件事情之前呼叫gettimeofday(),在做完該件事情之後呼叫gettimeofday(),兩個函式的引數1
的差就是做該事情所消耗的時間.
例程:計算函式function()的耗時
time.c
#include
#include
#include
#include
void function() /* 演算法分析 */
void main()
執行結果:
[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微秒
引數:需要休眠的秒數
Linux下關於時間的函式
標頭檔案 includestruct timeval 其中tv sec是由凌晨開始算起的秒數,tv usec則是微秒 10e 6 second struct timezone tv minuteswest是格林威治時間往西方的時差,tv dsttime則是時間的修正方式。struct timespe...
Linux下關於snmp的snmpwalk命令
最後,普及下snmpwalk命令 可使用snmpwalk檢視支援snmp協議的裝置的一些資訊,如cisco交換機或路由器ip位址等,也可用來協助開發snmp功能。用法 snmpwalk v 1或2 代表snmp版本 c snmp讀密碼 ip位址 oid 物件標示符 1 v 指定snmp的版本,1或者...
linux下關於檔案許可權的控制
1.為什麼需要檔案許可權的存在?給檔案加上許可權,可有效對檔案進行保護,防止對檔案的惡意篡改。2.檢視檔案許可權的命令 方式一 ls l 檔名 方式二 ls ld 檔案路徑 3.關於許可權的理解 1 檔案 rw r r 1 root root 0 aug 15 04 58 day03 各引數解釋如下...