-2

mktime我正在尝试使用和计算两个日期之间的日期差异difftime。其中一个日期是struct tminside 另一个struct,另一个日期是struct tminside mainmktime里面的日期可以正常工作main,但在struct. 我想我忽略了一些关于如何访问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;
}
4

3 回答 3

0

这些日期函数基于纪元年:1970。您使用的是 1967 年。

顺便说一句:丹尼斯·里奇(Dennis Ritchie)想要 1970 年的时代,这样价值观(无论是消极的还是积极的)都会贯穿他的一生。(或者他曾经在一次采访中说过。)

于 2013-06-26T15:57:54.270 回答
0

你确定它返回-1,但不仅仅是一个负值,典型-69987600的是从 1970 年 1 月 1 日(回到)1967 年 10 月 14 日的秒数?

那个 1967 日期Epoch 时间开始之前,所以它的 Epoch 表示是negativ

于 2013-06-26T16:16:20.710 回答
0

访问结构的方式没有问题。问题是 mktime() 不接受的 1970 年之前的日期。

于 2013-06-29T01:58:43.910 回答