| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 887 人关注过本帖, 1 人收藏
标题:2015年1月9日 到 2015年1月8日 之间相差1天,请问是如何计算出来的
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏(1)
已结贴  问题点数:100 回复次数:5 
2015年1月9日 到 2015年1月8日 之间相差1天,请问是如何计算出来的
为什么我的代码计算出来 是相差31天呢

程序代码:
#include <stdio.h>
#include <time.h>

int main (void)
{
    struct tm ptr;
    ptr.tm_sec=50;
    ptr.tm_min=10;
    ptr.tm_hour=10;
    ptr.tm_mday=9;
    ptr.tm_mon=1;
    ptr.tm_year=2015-1900;   //2015年1月9日10时10分50秒
    time_t st=mktime(&ptr);
    time_t lt=time(NULL);
    printf("秒差:%d\n",st-lt);
    printf("时差:%d\n",(int)((st-lt)/3600));
    printf("日差:%d\n",(int)((st-lt)/3600/24));
    return 0;
}
搜索更多相关主题的帖子: color 如何 
2015-01-08 15:59
圈圈ing
Rank: 2
等 级:论坛游民
帖 子:12
专家分:45
注 册:2015-1-4
收藏
得分:25 
真心看不懂
2015-01-08 16:03
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:25 
ptr.tm_mon=1;
应该是 ptr.tm_mon = 0;

int tm_mon;     /* months since January - [0,11] */
2015-01-08 16:32
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:25 
一直都不知道设计这个结构体的人是如何想的,其他的字段都是从0开始的,就日期这个字段是从1开始的。好几次我就把这个字段弄错。
2015-01-08 16:43
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:25 
学习代码 顺便拿分 HEHE

Only the Code Tells the Truth             K.I.S.S
2015-01-08 22:39
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
谢谢r版,问题应该解决,顺便贴一个计算2个日期的天数差的函数  希望能帮到大家

程序代码:
#include <stdio.h>
#include <time.h>

int datediff(int y1,int m1,int d1,int y2,int m2,int d2)
{
    struct tm ptr1;
    ptr1.tm_sec=10;
    ptr1.tm_min=10;
    ptr1.tm_hour=10;
    ptr1.tm_mday=d1;
    ptr1.tm_mon=m1-1;
    ptr1.tm_year=y1-1900;   
    time_t st1=mktime(&ptr1);
    struct tm ptr2;
    ptr2.tm_sec=10;
    ptr2.tm_min=10;
    ptr2.tm_hour=10;
    ptr2.tm_mday=d2;
    ptr2.tm_mon=m2-1;
    ptr2.tm_year=y2-1900;   
    time_t st2=mktime(&ptr2);
    return (int)((st2-st1)/3600/24);
}

int main (void)
{
    int t=datediff(2015,1,9,2015,2,18);
    printf("%d",t);
    return 0;
}


DO IT YOURSELF !
2015-01-09 09:00
快速回复:2015年1月9日 到 2015年1月8日 之间相差1天,请问是如何计算出来的
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011986 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved