我正在尝试使用我自己的日期结构计算我给出的两个日期之间的确切差异,我现在正在测试返回差异的函数:
Date dateDifference(Date a, Date b){
time_t rawtime,timeA,timeB;
struct tm* tA,*tB;
double difference;
time(&rawtime);
tA = tB = localtime(&rawtime);
tA->tm_mday = 20;
tA->tm_mon = 1;
tA->tm_year = 115;
tB->tm_mday = 3;
tB->tm_mon = 10;
tB->tm_year = 89;
timeA = mktime(tA);
timeB = mktime(tB);
difference = difftime(timeA, timeB);
}
如您所见,我在两个“tm”结构中提供了一些手动编号以对其进行测试。 当我调试时,我在“timeA”和“timeB”中得到完全相同的值。 我不是很熟悉 time.h 函数,因此我正在使用我在网上找到的知识来做这件事,这是我成功实现的最好结果。
我做错了什么?
最佳答案
你遇到的两个问题是:
localtime()
返回指向其自身静态内存中结构的指针。您应该在再次调用 localtime()
之前复制该结构。
您没有为两个 tm
结构分配任何内存 - 我已将它们从指针更改为简单结构。
#include <stdio.h>
#include <time.h>
int main()
{
time_t timeA, timeB;
struct tm tA, tB, *tptr;
double difference;
time(&timeA);
time(&timeB);
tptr = localtime(&timeA);
tA = *tptr;
tptr = localtime(&timeB);
tB = *tptr;
tA.tm_mday = 20;
tA.tm_mon = 1;
tA.tm_year = 115;
tB.tm_mday = 3;
tB.tm_mon = 10;
tB.tm_year = 89;
timeA = mktime(&tA);
timeB = mktime(&tB);
difference = difftime(timeA, timeB);
printf ("Difference is %.0f seconds\n", difference);
return 0;
}
程序输出:
Difference is 798336000 seconds
关于c++ - 尝试使用 time.h 库计算两个日期之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28048839/