首页 > 解决方案 > 在 c 中将 time_t 转换为 DATE 结构

问题描述

我有以下结构:

typedef struct Date {
   short day, month, year;
} DATE;

我想创建一个获取time_t变量并将其转换为的函数,DATE但我遇到了一些问题。尝试了以下方法:

DATE timeTConverter(time_t date) 
{
    struct tm *giverTime;
    giverTime = localtime(date);
    DATE given;
    given.day = giverTime->tm_mday;
    given.month = giverTime->tm_mon++;
    given.year = giverTime->tm_year;

    return given;
}

但这似乎不起作用。有任何想法吗?

标签: ctime-t

解决方案


localtime()接受一个指向 的指针 time_t,而不是time_t它本身。

由于未使用结果,因此递增giverTime->tm_mon也没有意义。看来您想分配giverTime->tm_mon + 1

DATE timeTConverter(time_t date) 
{
    struct tm *giverTime;
    giverTime = localtime(&date); /* pass a pointer */
    DATE given;
    given.day = giverTime->tm_mday;
    given.month = giverTime->tm_mon+1; /* simply add instead of increment */
    given.year = giverTime->tm_year;

    return given;
}

推荐阅读