将长值转换为日期?

标签 c date time

我有一个存储在长值中的日期,即 20130228,我需要对其执行操作,例如添加 30 天或 50 天等。关于如何将其转换为更合适的日期有什么建议吗?

最佳答案

如果这样存储

unsigned long d = 20130228;

你必须先用简单的算法将它拆分并放入一个struct tm

struct tm tm;
tm.tm_year = d / 10000 - 1900;
tm.tm_mon = (d % 10000) / 100 - 1;
tm.tm_mday = d % 100;
tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
tm.tm_isdst = -1;

然后您可以将一些值 30 添加到 tm.tm_mday。如果你使用 mktime() ,您将收到一个 time_t 作为 seconds since the epoch并且 tm 中的字段将被规范化

time_t t = mktime(&tm);

关于将长值转换为日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15133989/

相关文章:

c - 文件打开时出错 : File exists

c - Objective-c:为什么在我继承的这段代码中使用了 strtol 方法?

date - 为什么我需要在Grails中解析日期?

java - 我的时间介于开始时间和结束时间之间

java - 从带有偏移值的日期获取时区信息

c - Pebble C 将 char 转换为时间以在 double difftime(time_t end, time_t begin) 中使用

c - POSIX 正则表达式表示法以 @ 开头和结尾,正则表达式表示法包含字母数字字符但必须包含 _

c - 将数字作为原始二进制文件写入文件

php - 如何在mysql日期类型字段中插入一个空值?

javascript - 如何获取 Dojo DateTextBox 小部件的内部值?