c - 如何将(长)日期转换为 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
如果你更喜欢。
我在这里做错了什么?
解决方案
您的代码写入 1 字节的只读内存区域。这更有可能使程序崩溃,而不是做任何有用的事情。利用:
char readableDateTime[100] = "";
此外,8 位无符号整数只能保存值 0..255。请注意,2019 % 256 是 227。至少uint16_t
用于year
.
推荐阅读
- electron - 电子没有得到命令行参数
- javascript - 如何在Angular的ngModel中传递两个属性?
- css - 尝试在 vs 代码中编译 SASS 时出现读取错误
- swift - 如何使用 NSPasteboard 实现“复制和粘贴”到 Finder?
- vba - 为什么代码在调试中可以正确运行?
- javascript - Javascript代码适用于箭头函数而不是普通函数
- java - ORA-00933: SQL 命令未正确结束 - WHERE 子句
- java - 专用 Spring Container 与 Spring Scope
- java - MacOS 上的 OpenJDK8 和 JavaFX
- node.js - 如何将 Express Nodejs 中的发布请求对象导出到另一个模块