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 該函式返回系統的當前...