-2

mktimeと を使用して、2 つの日付の日付の差を計算しようとしていますdifftime。日付の 1 つは別の日付の内側にあり、struct tmもう1 つのstruct日付はstruct tm内側にありmainます。 mktime内の日付では問題なく動作しますがmain、内の日付に対して -1 を返し続け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

構造体へのアクセス方法は問題ありません。問題は、mktime() が受け入れない 1970 年より前の日付です。

于 2013-06-29T01:58:43.910 に答える
0

1970 年 1 月 1 日から 1967 年 10 月 14 日までの秒数である-1、単なる負の値ではなく、 を返しますか?-69987600

その 1967 年の日付はエポック時間の開始であるため、そのエポック表現はnegativです。

于 2013-06-26T16:16:20.710 に答える
0

これらの日付関数は、1970 年というエポック年に基づいています。1967 年を使用しています。

余談ですが、Dennis Ritchie は 1970 年のエポックを望んでいたため、値 (負と正の両方) が彼の人生全体に及ぶようになりました。(または、彼はかつてインタビューでそう言った。)

于 2013-06-26T15:57:54.270 に答える