在 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;
}

但是好像不行。 有什么想法吗?

解决方法

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;
}