看了一下解題報告,似乎沒有人提到這個方法,如果你懶得手動計算日期,C語言有個結構叫做tm,可以像這樣用:
struct tm tm1={0};tm1.tm_year=year-1900;tm1.tm_mon=month-1;tm1.tm_mday=day;
然後用mktime(&tm1)就能得到秒數。兩個秒數相減除86400就是日期差異
我有查到資料,酷耶!
https://www.cplusplus.com/reference/ctime/tm/
https://www.cplusplus.com/reference/ctime/mktime/
想請問為什麼直接秒數相減就可以是答案了呢?秒數的range只有0-60為何可以這樣操作?
看了一下解題報告,似乎沒有人提到這個方法,如果你懶得手動計算日期,C語言有個結構叫做tm,可以像這樣用:
struct tm tm1={0};tm1.tm_year=year-1900;tm1.tm_mon=month-1;tm1.tm_mday=day;
然後用mktime(&tm1)就能得到秒數。兩個秒數相減除86400就是日期差異
我有查到資料,酷耶!https://www.cplusplus.com/reference/ctime/tm/
https://www.cplusplus.com/reference/ctime/mktime/
想請問為什麼直接秒數相減就可以是答案了呢?秒數的range只有0-60為何可以這樣操作?
我沒有說清楚,這裡的秒數指的是從1970年1月1日零點開始的秒數
https://www.cplusplus.com/reference/ctime/time_t/
看了一下解題報告,似乎沒有人提到這個方法,如果你懶得手動計算日期,C語言有個結構叫做tm,可以像這樣用:
struct tm tm1={0};tm1.tm_year=year-1900;tm1.tm_mon=month-1;tm1.tm_mday=day;
然後用mktime(&tm1)就能得到秒數。兩個秒數相減除86400就是日期差異
有人詢問之後我才發現,如果年份在1970年之前,有些系統的函式庫會出現錯誤,似乎是因為c/c++標準只規定1970年之後的時間,雖然glibc支援我這種寫法,但是這是非標準的寫法。會介意的話就不要像我這樣寫。