我应该将用户通过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);
}