我下面有字符串。

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使用SYSTEMTIMEFILETIME。设置为SYSTEMTIME,然后通过函数SystemTimeToFileTime生成FILETIME。通过函数CompareFileTime比较两个FILETIME。
为了计算两个FILETIME之间的距离,我正在编写以下丑陋的代码:

__int64 duration = ((*(__int64 *)&ft2) - (*(__int64 *)&ft1));

请注意,SYSTEMTIME比struct tm具有更高的分辨率。

10-08 11:52