freecplus框架 日期 時間和計時器

2021-10-23 01:20:06 字數 3539 閱讀 6681

五、時間的運算

六、計時器

本文介紹的是freecplus框架的時間操作函式。

函式和類的宣告檔案是freecplus/_freecplus.h。

函式和類的定義檔案是freecplus/_freecplus.cpp。

示例程式位於freecplus/demo目錄中。

編譯規則檔案是freecplus/demo/makefile。

unix作業系統根據計算機產生的年代和應用採用2023年1月1日作為unix的紀元時間,2023年1月1日0點作為計算機表示時間的是中間點,將從2023年1月1日開始經過的秒數用乙個整數存放,這種高效簡潔的時間表示方法被稱為「unix時間紀元」,向左和向右偏移都可以得到更早或者更後的時間。

在實際開發中,對日期和時間的操作場景非常多,例如程式啟動和退出的時間,程式執行任務的時間,資料生成的時間,資料處理的各環節的時間等等。

在linux系統中,自定義了time_t型別,如下:

typedef

long time_t;

// 時間值time_t為長整型long的別名。

取作業系統的時間,並把整數表示的時間轉換為字串表示的格式。

函式宣告:

void

localtime

(char

*out_stime,

const

char

*in_fmt=0,

const

int in_interval=0)

;

引數說明:

stime:用於存放獲取到的時間字串。

timetvl:時間的偏移量,單位:秒,0是預設值,表示當前時間,30表示當前時間30秒之後的時間點,-30表示當前時間30秒之前的時間點。

fmt:輸出時間的格式,fmt每部分的含義:「yyyy」-年份;「mm」-月份;「dd」-日期;「hh24」-小時;「mi」-分鐘;「ss」-秒,預設是"yyyy-mm-dd hh24:mi:ss",目前支援以下格式:

"yyyy-mm-dd hh24:mi:ss"

"yyyymmddhh24miss"

"yyyy-mm-dd"

"yyyymmdd"

"hh24:mi:ss"

"hh24miss"

"hh24:mi"

"hh24mi"

"hh24"

"mi"

注意:

1)小時的表示方法是hh24,不是hh,這麼做的目的是為了保持與資料庫的時間表示方法一致;

2)以上列出了常用的時間格式,如果不能滿足您應用開發的需求,請修改源**timetostr函式增加更多的格式支援;

3)呼叫函式的時候,如果fmt與上述格式都匹配,stime的內容將為空。

示例(demo24.cpp)

/*

* 程式名:demo24.cpp,此程式演示freecplus框架中localtime時間函式的使用。

*/#include

"../_freecplus.h"

intmain()

函式宣告:

void

timetostr

(const time_t ltime,

char

*stime,

const

char

*fmt=0)

;

引數說明:

ltime:整數表示的時間。

stime:字串表示的時間。

fmt:輸出字串時間stime的格式,與localtime函式的fmt引數相同,如果fmt的格式不正確,stime將為空。

函式宣告:

time_t strtotime

(const

char

*stime)

;

引數說明:

stime:字串表示的時間,格式不限,但一定要包括yyyymmddhh24miss,乙個都不能少。

返回值:整數表示的時間,如果stime的格式不正確,返回-1。

示例(demo26.cpp)

/*

* 程式名:demo26.cpp,此程式演示freecplus框架中整數表示的時間和字串表示的時間之間的轉換。

*/#include

"../_freecplus.h"

intmain()

把字串表示的時間加上乙個偏移的秒數後得到乙個新的字串表示的時間。

函式宣告:

bool

addtime

(const

char

*in_stime,

char

*out_stime,

const

int timetvl,

const

char

*fmt=0)

;

引數說明:

in_stime:輸入的字串格式的時間。

out_stime:輸出的字串格式的時間。

timetvl:需要偏移的秒數,正數往後偏移,負數往前偏移。

fmt:輸出字串時間out_stime的格式,與localtime函式的fmt引數相同。

返回值:true-成功,false-失敗,如果返回失敗,可以認為是in_stime的格式不正確。

示例(demo28.cpp)

/*

* 程式名:demo28.cpp,此程式演示freecplus框架中採用addtime進行時間的運算。

*/#include

"../_freecplus.h"

intmain()

ctimer類是乙個精確到微秒的計時器。

類宣告:

// 這是乙個精確到微秒的計時器。

class

ctimer

;

ctimer建立物件後立即開始計時,每次呼叫elapsed方法獲取已逝去的時間(單位:秒,小數點後面是微秒),並重新開始計時。

示例(demo29.cpp)

/*

* 程式名:demo29.cpp,此程式演示freecplus框架中的ctimer類(計時器)的用法。

*/#include

"../_freecplus.h"

intmain()

執行效果

從demo29執行的效果上看,好像計時有誤差,同樣是睡1秒,實際耗時卻是1.000126或1.000171,這是因為程式本身執行需要時間,雖然時間很短,那也是需要時間。

freecplus框架 xml解析

本文介紹的是採用freecplus框架的解析xml格式字串函式。函式和類的宣告檔案是freecplus freecplus.h。函式和類的定義檔案是freecplus freecplus.cpp。示例程式位於freecplus demo目錄中。編譯規則檔案是freecplus demo makefi...

freecplus框架 xml解析

本文介紹的是採用freecplus框架的解析xml格式字串函式。函式和類的宣告檔案是freecplus freecplus.h。函式和類的定義檔案是freecplus freecplus.cpp。示例程式位於freecplus demo目錄中。編譯規則檔案是freecplus demo makefi...

freecplus框架 目錄操作

目錄本文介紹的是freecplus框架的目錄操作函式和類。函式和類的宣告檔案是freecplus freecplus.h。函式和類的定義檔案是freecplus freecplus.cpp。示例程式位於freecplus demo目錄中。編譯規則檔案是freecplus demo makefile。...