unix環境C程式設計之日期時間轉換

2021-06-07 04:21:57 字數 3406 閱讀 1011

1、理清概念

含義:國際標準時間2023年1月1日00:00:00以來經過的秒數。

資料型別:time_t。實際上是long的別名。

含義:結構化存放時間的資料結構,方便檢視。

ansi c標準稱使用tm結構的這種時間表示為分解時間(broken-down time)

資料型別:

struct tm

2、時間轉換

2.1、時間轉換函式

以下時間轉換函式在

time.h中定義 :

(1) time_t time(time_t *calptr);

功能:返回當前日期和時間。

引數:若calptr不為空,則返回的時間值也存放在calptr指向的單元內。

返回值:若成功則返回時間值,不成功則返回-1。

(2) struct tm * gmtime(const time_t *calptr);

功能:將日曆時間轉成國際標準時間的年、月、日、時、分、秒、週日。

引數:日曆時間。

返回值:指向struct tm時間的指標。

(3) 

struct tm * localtime(const time_t *calptr);

功能:將日曆時間轉成本地時間(考慮到本地時區和夏時制標誌)。

引數:日曆時間。

返回值:指向struct tm時間的指標。

(4) time_t mktime(struct tm *tmptr);

功能:將時間結構資料轉換成經過的秒數。

引數:tm結構時間。

返回值:日曆時間。

(5) char *asctime(const struct tm *tmptr);

功能:將時間結構資料

轉換為相應的字串(英文簡寫形式)。

引數:tm結構資料。

返回值:時間字串。

(6) char *ctime(const time_t *calptr);

功能:將日曆時間轉成字串。

引數:日曆時間。     

返回值:時間字串。

(7) size_t strftime(char *restrict but, size_t maxsize,

const char *restrict format,

const struct tm *restrict tmptr);

功能:將時間結構資料轉成格式化字串。

引數:buf存放格式化的結果。maxsize為buf的長度(該長度需要保證能夠存放字串以及乙個null終止符)。

format為格式化引數,類似printf的格式化。tmptr指向乙個tm結構的時間資料。

返回值:若buf能夠儲存結構則返回存入陣列的字元數(不包括null終止符),否則返回0。

2.2、轉換關係圖為:

(圖中以虛線表示的四個函式localtime、mktime、ctime和strftime都受到環境變數tz的影響)

3、strftime的轉換說明

格式

說明

例項%a

縮寫的星期名

thu %a

全星期名

thursday %b

縮寫的月名

aug %b

全月名august %c

日期和時間

thu aug 23 14:55:02 2001 %c

年/100 

[00,99] 20

%d十進位制表示的每月的第幾天

[01,31] 16

%d月/天/年

[mm/dd/yy]

06/16/12 %e

十進位制表示的每月的第幾天

,一位數前加空格

[1,31] 10

%f年-月-日

[yyyy-mm-dd]

2012-06-16 %g

iso 8601

使用基於周的年的後兩位數字 12

%giso 8601

使用基於周的年

2012 %h

簡寫的月份名

,與%b相同

aug %h

24小時制的小時

[00,23]

14 %i

12小時制的小時[0

1,12] 02

%j 每年的第幾天

[001,366]

235 %m

十進位制的月[0

1,12] 08

%m 分鐘[

00,59] 55

%n換行符 %p

am/pm  pm

%r

11:01:23 am %r

與「%h:%m

」相同

11:01 %s

秒[00,

60] 02

%t 水平製表符 %t

與「%h:%m

:%s」相同

11:01:23 %u

iso 8601

的星期,星期一為1,[1,7] 2

%u 週數

,以週日為一周開始 [00,53] 33

%viso 8601週數 [01,53] 07

%w星期,星期天為

0. [0,6] 4

%w週數,以星期一為一周開始

[00,53] 34

%x標準日期

06/16/12 %x

標準時間

14:55:02 %y

年份的後兩位數字

[00,99] 12

%y 年

2012

%ziso 8601格式的utc偏移量

-0500 %z

時區名est %%

百分號 %

4、舉例

**:

#include#includeint main()

結果:

the current time of seconds:[1339819819], string is:[fri jun 15 21:10:19 2012

]get struct tm tm_t from seconds is:[2012-06-15 21:10:19]

get seconds from struct tm:[1339819819]

the struct tm tm_t1 is:[2012-01-16 00:00:00]

說明:1、ctime得到的字串有換行符

2、tm結構的

tm_year

為從1900開始的年數

2、tm結構的

tm_mon為0時表示1月

php程式設計之日期和時間

1 日期和時間 1.unix時間戳 以32位整數表示格林威治標準時間 11230499325 這個uinix時間戳整數是從1970年1月1日0時0分0秒 計算機元年 到現在的秒數 作用 方便我們計算使用 參於運算 php所能表示的時間範圍 1970 2038 2.在php中獲取日期和時間 time ...

c 之日期時間

c 標準庫沒有提供所謂的日期型別。c 繼承了 c 語言用於日期和時間操作的結構和函式。為了使用日期和時間相關的函式和結構,需要在 c 程式中引用 標頭檔案。有四個與時間相關的型別 clock t time t size t和tm。型別 clock t size t 和 time t 能夠把系統時間和...

C 基礎教程之日期和時間

結構型別 tm 把日期和時間以 c 結構的形式儲存,tm 結構的定義如下 struct tm 下面是 c c 中關於日期和時間的重要函式。所有這些函式都是 c c 標準庫的組成部分,您可以在 c 標準庫中檢視一下各個函式的細節。1 time t time time t time 該函式返回系統的當前...