Linux應用程式設計之時間程式設計

2021-07-13 10:11:46 字數 4212 閱讀 8526

一、時間的型別

(1)

格林威治標準時間

coordinated universal time(utc)

是世界標準時間,即常說的格林威治標準時間

(greenwich mean time,gmt).注:

格林威治時間和本地時間不同

.(2)

日曆時間

日曆時間

(calendar time)是用"

乙個標準時間點(如

2023年1

月1日0

點)到此時經過的秒數

"來表示的時間

. 二、與時間有關的結構

(1): struct tm

(2):struct timeval

(3):struct timespec

三、時間函式的api

時間函式的

api均屬於系統呼叫函式

.(1)

獲取日曆時間

#include

time_t time(time_t *tloc)

函式功能

:獲取日曆時間,即從

2023年1

月1日0

點到現在所經歷的秒數.引數

:如果不為空,則時間值也存放在由tloc指向的單元內。例程:

#include

#include<

time

.h>

void main()

執行結果

:seconds=1287902909

attention!!!

通常使用者得到日曆時間的秒數沒有實際的意義,但可以為時間轉化做一些鋪墊性質的工作

.為了更好的利用時間,使用者需要將這些秒數轉化為更容易接受的時間表示方式,這些表示時間的方式有格林威治時間、本地時間等

.(2)

將日曆時間轉換為格林威治標準時間

struct tm *gmtime(const time_t *timep)

函式功能

:將日曆時間轉化為格林威治標準時間,並儲存在

tm結構引數:

日曆時間的返回值

(3)

將日曆時間轉化為本地時間

struct tm* localtime(const time_t *timep)

函式功能

:將日曆時間轉化為本地時間

,並儲存至

tm結構引數:

日曆時間的返回值

attention!!!

由上面兩個函式可以看出,這兩個函式的返回值均存放在

tm結構中。

time.c  

#include

#include <

time

.h>

int main(void)

執行結果

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

[root@localhost lishuai]# date   //

獲取linux

系統的當前時間

mon dec 14  03:27:16  cst 2009

[root@localhost lishuai]# ./time

local hour is : 3    //(linux

系統的)

當前時間是3點

utc hour is : 19     //

格林威治時間是19點

attention!!!

利用函式

gmtime()

、localtime()

可以將日曆時間轉化為格林威治時間和本地時間,雖然使用者可通過結構體

tm來獲取這些時間值,但看起來還不方便,最好是將所有的資訊,如年、月、日、星期、時、分、秒以字串的形式顯示出來,這樣就加直觀

.(4)

將日曆時間轉化為本地時間的字串形式

char *ctime(const time_t *timep)

函式功能

:將日曆時間轉化為本地時間的字串形式引數:

日曆時間的返回值

attention!!!

該函式較

asctime()

使用起來更加簡單

.必須按照下面

2個步驟來進行

.<1>

使用函式

time()

來獲取日曆時間

<2>

使用函式

ctime()

將日曆時間直接轉化為字串

(5)

將格林威治時間轉化為字串

char *asctime(const struct tm *tm)

函式功能:將

tm格式的時間轉化為字串引數:

日曆時間的返回值

例如: sat jul 30 08:43:03 2005

attention!!!

該函式較

ctime()

使用起來更加的複雜

.必須按照下面

3個步驟來進行

.<1>

使用函式

time()

來獲取日曆時間

<2>

使用函式

gmtime()

將日曆時間轉化為格林威治標準時間

<3>

使用函式

asctime()將tm

格式的時間轉化為字串例程:

#include <

time

.h>

#include

int main(void)

(6)

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

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

函式功能

:獲取從今日凌晨

(0:0:0)

到現在的時間差,常用於計算事件耗時

引數1:

存放從今日凌晨

(0:0:0)

到現在的時間差,時間差以秒或微秒為單位,以timeval結構形式存放。

引數2:

常設定為

null

函式用法

:可以在做某件事情之前呼叫

gettimeofday()

,在做完該件事情之後呼叫

gettimeofday()

,兩個函式的引數

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

:計算函式

function()

的耗時time.c

#include time

.h>

#include

#include

#include

void function()

void main()

執行結果

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

[root@localhost lishuai]# ./time

use time:0.006288

(7)

延時函式

<1>

使程式睡眠

seconds

秒unsigned int sleep(unsigned int seconds)

函式功能

:使程式睡眠

seconds秒引數

:需要休眠的秒數

<2>

使程式睡眠

usec

微秒void usleep(unsigned long usec)

函式功能

:使程式睡眠

usec

微秒引數

:需要休眠的秒數

Linux應用程式設計 時間程式設計

相關標頭檔案 time.h 是iso c99 標準日期標頭檔案。sys time.h 是linux系統的日期標頭檔案。注 sys time.h 通常會包含include time.h structure crudely representing a timezone.this is obsolete...

Linux串列埠應用程式設計

常見的資料通訊的基本方式可分為並行通訊與序列通訊兩種。1.並行通訊是指利用多條資料傳輸線將乙個字資料的各位元位同時傳送。它的特點是傳輸速度快,適用於傳輸距離短且傳輸速度較高的通訊。2.序列通訊是指利用一條傳輸線將資料以位元位為單位順序傳送。特點是通訊 線路簡單,利用簡單的線纜就可實現通訊,降低成本,...

Linux應用程式設計 mmap

二話不說,上來就問下那個man name mmap,munmap map or unmap files or devices into memory synopsis include void mmap void addr,size t length,int prot,int flags,int f...