《UNIX環境高階程式設計》筆記24 時間和日期

2021-08-07 20:16:15 字數 2946 閱讀 4408

由unix核心提供的基本時間服務是計算 自國際標準時間公元2023年1月1日00:00:00以來經過的秒數,以time_t表示。以下2個

函式返回當前時間。

[cpp]view plain

copy

#include 

time_t

time(

time_t

* ptr); 

//成功則返回時間值,出錯則返回-1.

時間總是作為函式值返回,如果引數不為空,則時間值也存放在由ptr指向的單元內。

如果要獲取更高的解析度(微秒級),可以使用gettimeofday函式。

[cpp]view plain

copy

#include 

intgettimeofday(

struct

timeval *restrict tp, 

void

*restrict tzp); 

//返回值總是0

tzp的唯一合法值是null,使用其他值將產生不確定的結果。某些平台支援用tzp說明時區,但這完全依賴平台的實現。

struct timeval的定義如下:

[cpp]view plain

copy

struct

timeval  

取得了以秒計的整型的時間值後,通常要呼叫另乙個時間函式將其轉換**們可讀的時間和日期,下圖說明了各種時間函式

之間的關係。(其中虛線表示的四個函式收到環境變數tz的影響,如果定義了tz,則這些函式將使用其值代替系統預設時區)

localtime和gmtime函式將time_t時間轉換成年月日時分秒週日表示的時間,並將這些存放在乙個tm結構中。

[cpp]view plain

copy

struct

tm  

[cpp]view plain

copy

#include 

struct

tm* gmtime(

const

time_t

*calptr);  

//將日曆時間轉換成國際標準時間

struct

tm* localtime(

const

time* calptr);   

//將日曆時間轉換成本地時間

兩個函式都返回指向tm結構的指標。

函式mktime以本地時間的年,月,日等作為引數,將其轉換成time_t值。

[cpp]view plain

copy

#include 

time_t

mktime(

struct

tm* tmptr);  

//若成功則返回日曆時間,出錯則返回-1

函式asctime和ctime函式產生如下面形式的字串:

mon oct 28 10:42:06 cst 2013

[cpp]view plain

copy

#include 

char

*asctime(

const

struct

tm* tmptr);  

char

*ctime(

const

time_t

*calptr);  

兩個函式返回值,指向以null結尾的字串指標。

strftime函式類似於printf函式,將時間格式化輸出。

[cpp]view plain

copy

#include 

size_t

strftime(

char

* restrict buf, 

size_t

maxsize, 

const

char

*restrict format, 

const

struct

tm* restrict tmptr);  

如果成功則返回存入buf的字元數,否則返回0

下圖是format的格式符表:

實踐:[cpp]view plain

copy

#include 

#include 

#include 

intmain(

void

)  執行結果:

yan@yan-vm:~/apue$ ./a.out

1374895850

1374895850,276840

sat jul 27 03:30:50 2013

sat jul 27 11:30:50 2013

sat jul 27 11:30:50 2013

1374895850

從結果來看,asctime和ctime會在字串末尾自動加換行符。

如果增加了環境變數tz,執行結果:

yan@yan-vm:~/apue$ export tz=gmt

yan@yan-vm:~/apue$ ./a.out

1374895990

1374895990,366091

sat jul 27 03:33:10 2013

sat jul 27 03:33:10 2013

sat jul 27 03:33:10 2013

1374895990

《unix環境高階程式設計》筆記2

第四章 檔案和目錄 本章將描述檔案系統特徵和檔案性質 1 stat fstat和lstat函式 原型 include int stat const char restrict pathname,struct stat restrict buf int fstat int filedes,struct...

UNIX環境高階程式設計學習筆記

include include include include int main int argc,char argv err sys can t open s argv 1 while dirp readdir dp null printf s n dirp d name closedir dp ...

unix環境高階程式設計

unix 日曆時間 自1970 年1 月1 日00 00 00 以來的國際標準時間 utc 程序時間 cpu 時間 時鐘時間 程序執行時間的總量。使用者cpu 時間 執行使用者指令時間量。系統cpu 時間 執行核心所經歷時間。命令 time 第三章至第七章 原子操作 任何乙個要求多於1 個函式呼叫的...