C将用户输入的实时转换为unix时间

时间:2017-12-22 11:48:22

标签: c unix

我应该将用户通过stdin输入的日期转换为unix时间。我们只关心日期,而不是当前时间,这就是我将tm_hour,tm_min和tm_sec设置为零的原因。

我的代码似乎运行正常,但为了正确,它缺少3600秒。当我输入日期1.1.1970时,它不应该打印出0?

那为什么我必须添加3600才能获得正确的结果?

#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <unistd.h>

void main() {

    time_t tnow = 0;
    struct tm *tmnow;

    int year, month, day;

    printf("Bitte gib das Jahr an: "); // Input year
    scanf("%d", &year);
    printf("Bitte gib den Monat an: "); // Input month
    scanf("%d", &month);
    printf("Bitte gib den Tag an: "); // Input day
    scanf("%d", &day);

    tmnow->tm_year = (year-1900);
    tmnow->tm_mon = (month-1);
    tmnow->tm_mday = day;
    tmnow->tm_hour = 0;
    tmnow->tm_min = 0;
    tmnow->tm_sec = 0;

    tnow = mktime(tmnow);
    tnow += 3600; // WHY??
    printf("%d\n", tnow);
}

0 个答案:

没有答案