c++中如何算出两个日期之间的天数 在线等.....

xutianming 2008-12-03 02:43:14
例如我现在输入两个日期20081128 20081202 得到的数为5 在线等....
...全文
224 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zapdos 2008-12-07
  • 打赏
  • 举报
回复
可以算出距离19700101的天数然后相减好了
newsunet 2008-12-07
  • 打赏
  • 举报
回复
struct tm tm1 tm2;
tm1...=..
tm2...=..

time_t t1,t2;
t1 = gmtime(tm1);
t2 = gmtime(tm2);

t2-t1就是 两个时间的间隔毫秒数,自己做出发算出天数就可以了

给出的函数可能参数的形式不对,看一下MSDN及好了。
SCUM 2008-12-07
  • 打赏
  • 举报
回复
正好有段老代码 给你参考下
只使用标准 C 库

实际上 现在任何一个 C/C++ 编译工具 都有自己的相关扩展
如 C++Builder 里有 DaysBetween 等
原理相近 都是转化为与标准参考时间之间的差 相减后 再根据需要换算即可


//
// 计算指定日期与当前日期的时间差
// 起始时间格式为 'YYYY-mm-dd HH:MM:SS'
//
void g_DateDiff( char* pRetBuf, char* pStartTime )
{
struct tm time1, time2;
time_t now, start;
double diff;
int day, hour, min, sec;

strptime( pStartTime, "%Y-%m-%d %H:%M:%S", &time1 );
start = mktime( &time1 );
time( &now );
diff = difftime( now, start );
day = (int)( diff / ( 3600 * 24 ));
hour = (int)(( diff - day * 3600 * 24 ) / 3600 );
min = (int)(( diff - day * 3600 * 24 - hour * 3600 ) / 60 );
sec = (int)( diff - day * 3600 * 24 - hour * 3600 - min * 60 );
sprintf( pRetBuf, "%d 天, %d 小时, %d 分, %d 秒", day, hour, min, sec );
}

// 测试代码:
char ret[80];
g_DateDiff( ret, "2008-12-06 15:50:00" );
printf( "时间差值: %s\n", ret );

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧