c - 如何在C中获取带有 future 时间的日期

标签 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 小时... 谁能给我一些建议或帮助。

最佳答案

即使您设法解决了午夜的问题,也需要考虑夏令时和换月,这意味着您还必须考虑闰年……不要去那里。

相反,在将时间转换为 time_t 之前,只需将时间加上 2 小时(2 * 60 * 60 秒)就容易多了:

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

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

关于c - 如何在C中获取带有 future 时间的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50494792/

相关文章:

C语言计算8位二进制值的汉明距离

c - 如何继续制作一个可以跟踪另一个软件的功能调用的软件?

c - 在 C 中将结构体的成员指向结构体本身

c - 使用 SSE 内在函数矢量化 2D 模板

c++ - 由于我无法返回局部变量,从 C 或 C++ 函数返回字符串的最佳方法是什么?

c - 如果整数序列的后续数字大于前一个,则显示 'increasing'

c - 无法理解循环中的值如何工作

c - 错误 - pthread_mutex_lock() 失败 : Invalid argument

c++ - 如何用空项目启动 MFC?

c - 试图将这些数组写入缓冲区和表数组,我错过了什么?