ChUCk Allison 是鹽湖城圣 Latter Day 教堂總部下耶穌教堂家族歷史研究處的軟件體系設計師。他擁有數學學士和數學碩士學位。他從1975年起開始編程,從1984年起他開始從事c語言的教學和開發。他目前的愛好是面向對象的技術及其教育。他是X3J16,ANSI C ++標準化委員會的一員。
struct tm { int tm_sec; /* (0 - 61) */ int tm_min; /* (0 - 59) */ int tm_hour; /* (0 - 23) */ int tm_mday; /* (1 - 31) */ int tm_mon; /* (0 - 11) */ int tm_year; /* past 1900 */ int tm_wday; /* (0 - 6) */ int tm_yday; /* (0 - 365) */ int tm_isdst; /* daylight savings flag */ }; 每次當你調用localtime的時候,它會重寫一個靜態的結構并返回該結構的地址(因此同一時刻在一個程序中只能取得一個這樣的結構,而不能做明顯的拷貝)。函數ctime返回一個指向靜態字符串的指針,該字符串以標準的格式包含了完整的時間和日期。strftime根據用戶的指定格式格式化字符串(例如,%A代表一周中每一天的名稱)。Table 1列出了格式描述符的完整列表。
時間/日期運算
通過改變tm結構里的值,可對時間/日期進行運算。Listing 2 中的程序展示了如何計算將來某天的日期和以秒為單位所計算出的程序執行時間。注重函數time的語法(參數time_t由地址傳入,并非作為函數的返回值)。函數mktime改變tm結構的值,以便日期和時間在一個合適的范圍內,之后day-of-week (tm_wday)和day-of-year (tm_yday)域進行相應的更新。mktime將tm結構中日期和時間的值置于合適的范圍之內,相應的更新day of week (tm-wday)和day of year (tm-yday)的值。這種情況發生在當一個日期超出了你的實現能夠支持的范圍的時候。例如,我的MS-DOS的編譯器不能編碼1970年1月份之前的日期。函數asctime返回tm參數所描述時間的標準字符串(因此ctime (&tval)與asctime (localtime(&tval)是相等的)。函數difftime返回用秒做單位的兩個time_t的差。