有這樣一個問題,但願從一個字符串解析出一個日期好比2013-1-2 12:1:10,而後判斷它是在當前時間以前仍是以後。
而這個字符串表明的日期咱們但願是表明本地時間。
給定任意時間均可以用mktime獲得一個給定時間到1970年一月一日零時的秒數,以下:
mktime(struct tm * _Tm)
1. 這裏的_Tm裏輸入的是本地時間,而計算的時候用的是格林尼治時間
因此至關你把你輸入的本地時間變換爲格林尼治時間,再去計算到1970年一月一日零時的秒數
2. _Tm裏輸入的年,是一個距1900年的距離,也就是2013年應該輸入113
3. _Tm裏輸入的月,是從0開始的,也就是說一月輸入0
mktime貌似windows上和unix上都有
用GetSystemTime可以得到系統當前時間,若是用它來計算當前時間到1970年一月一日零時的秒數的話,須要注意:
SYSTEMTIME systemTime;
GetSystemTime( &systemTime );
這裏獲得的systemTime,是一個日曆時間,包括日月年時分秒,它得到的是格林尼治時間
GetSystemTime是windows上的函數,unix上用time(NULL)
因此你要想利用上述兩個得出的結果比較一個特定時間和當前時間的話,須要考慮時差
還有另一個辦法就是
time_t
t = time(NULL) //先獲得一個格林尼治的時間,是一個從1970年...的秒數
struct tm *tms = localtime(&t) //用這個秒數獲得一個表明本地時間的日曆時間,包含年月日時分秒最後再利用mktime獲得一個由本地時間表明的從1970年...的秒數這樣,兩次用mktime都是輸入的本地時間,正好能夠比較time 和 localtime貌似windows上和unix上都有