距离1970.1.1零时的时间,须要考虑时差的问题

有这样一个问题,但愿从一个字符串解析出一个日期好比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上都有
相关文章
相关标签/搜索