问题很简单,在其他语言中有许多API特定的方法,但是我发现对于跨平台C++的使用,没有任何简单而直接的方法。
如果我有两个日期,并且假定它们在相同的语言环境中,那么在C++中区分它们的最简单方法是什么?
我(有点)使用time.h
进行了研究,创建了两个tm
对象,将它们转换为UTC,然后区分它们。
日期的当前格式为:YY/MM/DD HH:mm:SS
(存储为单个整数)
编辑:
好的,根据当前答案,我已经执行了以下操作(目前):
time_t calculate_seconds_between(
const uint Y1, const uint M1, const uint D1, const uint H1, const uint m1, const uint S1, // YY/MM/DD HH:mm:SS
const uint Y2, const uint M2, const uint D2, const uint H2, const uint m2, const uint S2
)
{
time_t raw;
time(&raw);
struct tm t1 = *gmtime(&raw), t2 = t1;
t1.tm_year = Y1 - 1900;
t1.tm_mon = M1 - 1;
t1.tm_mday = D1;
t1.tm_hour = H1;
t1.tm_min = m1;
t1.tm_sec = S1;
t2.tm_year = Y2 - 1900;
t2.tm_mon = M2 - 1;
t2.tm_mday = D2;
t2.tm_hour = H2;
t2.tm_min = m2;
t2.tm_sec = S2;
time_t tt1, tt2;
tt1 = mktime(&t1);
tt2 = mktime(&t2);
return (tt2 - tt1);
}
哪个很棒。
最佳答案
要将YY/MM/DD HH:mm:SS
转换为struct tm
,您可以使用strptime(如果没有,请创建等效项)
const char * dateInput;
// ....
struct tm tm;
time_t val;
memset(&tm, 0, sizeof(struct tm));
strptime(dateInput,"%y/%m/%d %H:%M:%S",&tm);
val = mktime(&tm);
获得两个
time_t
值后,可以调用difftime。关于c++ - 两个日期之间的秒数差异?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8294591/