首页 > 解决方案 > 如何将(长)日期转换为 C 中的可读格式?

问题描述

我正在尝试将长日期转换为可读格式

void ConvertToDateTime(unsigned long dateTime, char *result)
{
    uint8_t day = dateTime % 100;
    uint8_t month = (dateTime / 100) % 100;
    uint8_t year = dateTime / 10000;

    sprintf(result,
            "%02u/%02u/%04u",
            day,
            month,
            year);
}

调用者方法...

char *readableDateTime = (char*)"";
ConvertToDateTime(atoi(datestring), readableDateTime);

调试日期时间参数为20191112(yyyymmdd) 但result

null| empty string| nada如果你更喜欢。

我在这里做错了什么?

标签: cdate

解决方案


您的代码写入 1 字节的只读内存区域。这更有可能使程序崩溃,而不是做任何有用的事情。利用:

char readableDateTime[100] = "";

此外,8 位无符号整数只能保存值 0..255。请注意,2019 % 256 是 227。至少uint16_t用于year.


推荐阅读