我正在尝试使用mktime
和difftime
计算两个日期之间的日期差异。其中一个日期是另一个struct tm
内的struct
,另一个日期是struct tm
内的main
。
mktime
在main
内的日期工作正常,但对struct
内的日期保持返回-1。
我想我忽略了如何访问struct
内的struct
非常明显但我无法找到答案。提前谢谢。
代码在
之下#include <stdio.h>
#include <time.h>
struct consulta_cand {
struct tm nascimento;
};
int main(void)
{
struct consulta_cand candidato;
time_t now;
struct tm final2012;
double timeprint;
now = time(NULL);
final2012 = *localtime(&now);
final2012.tm_mday = 28;
final2012.tm_mon = 10 - 1;
final2012.tm_year = 2012 - 1900;
final2012.tm_hour = 23;
final2012.tm_min = 59;
final2012.tm_sec = 59;
timeprint = mktime(&final2012);
printf("%.f\n", timeprint);
candidato.nascimento = *localtime(&now);
candidato.nascimento.tm_mday = 14;
candidato.nascimento.tm_mon = 10 - 1;
candidato.nascimento.tm_year = 1967 - 1900;
candidato.nascimento.tm_hour = 0;
candidato.nascimento.tm_min = 0;
candidato.nascimento.tm_sec = 0;
timeprint = mktime(&candidato.nascimento);
printf("%.f\n", timeprint);
return 0;
}
答案 0 :(得分:0)
这些日期函数基于纪元年:1970年。您使用的是1967年。
顺便说一句:丹尼斯·里奇(Dennis Ritchie)在1970年想要这个时代,以便价值观(包括消极和积极)将贯穿他的整个人生。 (或者他曾在接受采访时说过。)
答案 1 :(得分:0)
你确定它会返回-1
,但不仅仅是一个负值,典型的-69987600
是从1970年1月1日(回到)1967年10月14日的秒数?
那个1967年的日期是大纪元时间开始前的,所以它的Epoch表示是 negativ 。
答案 2 :(得分:0)
访问结构的方式没有问题。 问题是1970年以前mktime()不接受的日期。