日期計算程式碼(1):計算當前時間前後N天
阿新 • • 發佈:2019-02-20
C語言計算當前時間前後N天可以藉助庫函式<time.h>提供的函式,先獲取當前時間從1970年開始累計的秒數,再加減N天對應的秒數,最後將秒數還原年月日時間,具體程式碼如下。
- #inlcude <time.h>
- int main(int argc,char* argv[])
- {
- time_t lt;
- lt = time(NULL);
- long seconds =24*3600*20;//24 小時 * 小時秒 * 天數
- lt += seconds;//計算後N天
- //lt -= seconds;//計算前N天
- struct tm *p = localtime(<);
- printf("時間為:%d年%d月%d日%d時%d分%d秒n"
- p->tm_year +1900,
- p->tm_mon +1,
- p->tm_mday,
- p->tm_hour,
- p->tm_min,
- p->tm_sec);
- }
說明:
time(NULL):返回從1970年1月1日0時0分0秒到當前時間所偏移的秒數。
localtime():將從1970年1月1日0時0分0秒到當前時間所偏移的秒數,轉化成本地時間年月日時分秒。
該方法不能計算1970年以前的時間,由於time_t資料型別(即long 型別)能表示的數值範圍有限,超出time_t的最大值之後的時間將無法表示。32位平臺可以表示的時間不能晚於2038年1月18日19時14分07秒,64位平臺能表示的最大時間為3001年1月1日0時0分0秒(不包括該時間點)。
struct tm結構如下:
- struct tm {
- int tm_sec;/* seconds after the minute - [0,59] */
- int tm_min;/* minutes after the hour - [0,59] */
- int tm_hour;/* hours since midnight - [0,23] */
- int tm_mday;/* day of the month - [1,31] */
- int tm_mon;/* months since January - [0,11] */
- int tm_year;/* years since 1900 */
- int tm_wday;/* days since Sunday - [0,6] */
- int tm_yday;/* days since January 1 - [0,365] */
- int tm_isdst;/* 是否夏令時(中國大陸不實行夏令時間) */
- };