對ctime和astime的理解

2021-08-22 09:20:03 字數 2796 閱讀 7012

用同一塊buffer,通過下面兩個程式測試出來.

#include ;

#include ;

using namespace std;

int main()

#ifdef _aix

ptime = asctime(gmtime((time_t *)&now));

#else

ptime = asctime(gmtime((long *)&now));

#endif

cout << now << endl;

cout << ctime(&now) << endl;

cout << now << endl;

cout << ptime << endl;

printf("haha\n ");

return 0; }

#include ;

#include ;

using namespace std;

int main()

cout << now << endl;

cout << ctime(&now) << endl;

#ifdef _aix

ptime = asctime(gmtime((time_t *)&now));

#else

ptime = asctime(gmtime((long *)&now));

#endif

cout << now << endl;

cout << ptime << endl;

printf("haha\n ");

return 0; }

localtime()和gmtime()之間的區別是:localtime將日曆時間轉換成本地時間(考慮到本地時區和夏時制標誌),而gmtime則將日曆時間轉換成國際標準時間的年、月、日、時、分、秒、週日。它們的定義如下:

struct tm* gmtime(const time_t* mem);

struct tm* localtime(const time_t* mem);

函式mktime()則正好相反,它是以存放有本地時間年、月、日等的tm結構作為引數,將其轉換成time_t型別的秒值。mktime()函式的定義是:

time_t mktime(struct tm* tmptr); //成功返回日曆時間,失敗則返回-1

函式asctime()和ctime()可以獲得人們可讀的時間字串,表示形式如同使用date命令所獲得的系統預設的時間輸出形式。它們的定義如下:

char* asctime(const struct tm* tmptr);//引數是指向存放有本地時間年、月、日等的tm結構的指標

char* ctime(const time_t* mem); //引數是指向日曆時間的指標

函式strftime()是最為複雜的時間函式,可用於使用者自定義時間的表示形式。函式strftime()的定義如下:

size_t strftime(char* buf, size_t maxsize, const char* format,

const struct tm* tmptr); //有空間則返回所存入陣列的字元數,否則為0

自 定義格式的結果存放在乙個長度為maxsize的buf陣列中,如果buf陣列長度足以存放格式化結果及乙個null終止符,則該函式返回在buf陣列中 存放的字元數(不包括null終止符),否則該函式返回0。format引數用於控制自定義時間的表示格式,格式的定義是在百分號之後跟乙個特定字元, format中的其他字元則按原樣輸出。其中特別應注意的是,兩個連續的百分號則是表示輸出乙個百分號。常用的定義格式如下表所示。

格式

說明

例子

% a

縮寫的週日名

tue

% a

全週日名

tuesday

% b

縮寫的月名

jan

% b

月全名

january

% c

日期和時間

wed aug 17 19:40:30 2005

% d

月日:[01, 31]

14

% h

小時(每天2 4小時):[00, 23]

19

% i

小時(上、下午各1 2小時[01, 12]

07

% j

年日:[001, 366]

014

% m

月:[01, 12]

01

% m

分:[00, 59]

40

% p

a m / p m

pm

% s

秒:[00, 61]

30

% u

星期日週數:[00, 53]

02

% w

週日:[ 0 =星期日,6 ]

2

% w

星期一周數:[00, 53]

02

% x

日期

08/17/05

% x

時間

19:40:30

% y

不帶公元的年:[00, 991]

05

% y

帶公元的年

2005

% z

時區名

mst

對atime mtime和ctime的研究

前期準備 在實驗之前我們在討論為何會出現兩種修改時間,為此我們推測因為修改的不是檔案的同一資料,或者說同一地方,那麼我們就要先搞清楚檔案的結構。linux檔案系統是linux系統的心臟部分,提供了層次結構的目錄和檔案。檔案系統將磁碟空間劃分為每1024個位元組一組,稱為塊 也有用512位元組為一塊的...

對SQLiteOpenHelper類的理解

使用sqliteopenhelper對資料庫進行版本管理 因為我們開發的軟體可能會安裝在成百上千個使用者的手機上,如果應用使用到了sqlite資料庫,我們必須在使用者初次使用軟體時建立出應用使用到的資料庫表結構及新增一些初始化記錄,另外在軟體公升級的時候,也需要對資料表結構進行更新。那麼,我們如何才...

對pthread cond wait 函式的理解

原文 了解 pthread cond wait 的作用非常重要 它是 posix 執行緒訊號傳送系統的核心,也是最難以理解的部分。首先,讓我們考慮以下情況 執行緒為檢視已鏈結列表而鎖定了互斥物件,然而該列表恰巧是空的。這一特定執行緒什麼也幹不了 其設計意圖是從列表中除去節點,但是現在卻沒有節點。因此...