如何在C中获取未来时间的日期

时间:2018-05-23 18:06:33

标签: c

我想提前2小时的时间。 目前我正在尝试这个:我在小时值中添加2

void printTodayFutureTime()
{
        char finalDate[50];
        time_t t;
        struct tm *date;

        memset(finalDate, '\0', 50);

        t = time(NULL);
        date = localtime(&t);
        if(date == NULL)
        {
                printf("Unable to get localtime\n\n");
                return;
        }

        int today = date->tm_mday;
        int month = date->tm_mon + 1;
        int year = date->tm_year + 1900;
        int hour = date->tm_hour;
        int minute = date->tm_min;
        int sec = date->tm_sec;

        snprintf(finalDate, 50, "%d-%d-%dT%d:%d:%d", year, month, today, hour + 2, minute, sec);

        printf("Today's date with future time is: %s\n\n", finalDate);
}

但是,如果小时是22,23,这将无效,因为它会跳到24小时和25小时...... 任何人都可以给我一些建议或帮助。

1 个答案:

答案 0 :(得分:4)

即使您设法在午夜解决问题,也需要考虑夏令时,并且包装数月,这意味着您还必须考虑闰年......不要去那里。

相反,在将转换为time_t之前,将添加2小时(2 * 60 * 60秒)要容易得多:

    t = time(NULL) + 2 * 60 * 60;
    date = localtime(&t);

这更加可靠,因为time_t只是自某个明确定义的时代以来的秒数。