我下面有字符串。
std::string _valid = "2014-03-28 16:45:59";
int y1, M1, d1, h1, m1, s1;
sscanf_s(_valid.c_str(), "%d-%d-%d %d:%d:%d", &y1, &M1, &d1, &h1, &m1, &s1);
现在,我可以得到年,月,日等等。
现在,我必须确定该时间是否早于当前日期时间。
time_t now = time(NULL);
但是,time_t总是以unix时间戳返回我的时间。
如何比较日期?
最佳答案
设置为struct tm,然后通过函数time_t生成mktime。您可以直接比较两个time_t的值。
您也可以从Windows.h使用SYSTEMTIME和FILETIME。设置为SYSTEMTIME,然后通过函数SystemTimeToFileTime生成FILETIME。通过函数CompareFileTime比较两个FILETIME。
为了计算两个FILETIME之间的距离,我正在编写以下丑陋的代码:
__int64 duration = ((*(__int64 *)&ft2) - (*(__int64 *)&ft1));
请注意,SYSTEMTIME比struct tm具有更高的分辨率。