| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4534 人关注过本帖
标题:请问有没有什么能计算任意两个日期之间的天数?
取消只看楼主 加入收藏
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
结帖率:84.21%
收藏
 问题点数:0 回复次数:5 
请问有没有什么能计算任意两个日期之间的天数?
我在书上看了一个:
对于一个给定日期,通过公式计算出一个值:N=1461 x f (年,月) / 4 + 153 x g(月) / 5 + 日

如果月 <= 2,年 - 1,月 + 13,否则年不变,月 + 1。

比如2004/8/8的N值是

N = 1461 x f(2004, 8) / 4 + 153 x g(8) / 5 +3
   = (1461 x 2004) / 4 + (153 x 9(因为大于二月,所以这里月份+1)) / 5 + 3
  = 2927844/ 4 + 1377 / 5 + 3
   = 731961 + 275 + 3
  = 732239

不明白最后+3什么意思,是不是书上错了?

2006年有人在论坛发过类似的问题,不过没个结果~


[ 本帖最后由 ilsoviet1917 于 2010-6-10 01:34 编辑 ]
搜索更多相关主题的帖子: 天数 
2010-06-10 01:32
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
收藏
得分:0 
嘿嘿~其实这是个函数与结构的练习题。我写了一个,但是编译不成功,函数和结构还是没理解透啊~

程序代码:
#include <stdio.h>
struct date
{
    int day;
    int month;
    int year;
};
int valueOfYear (struct date d)
{
    int year;
  
    if (d.month <= 2)
        year = d.year - 1;
    else
        year = d.year;
    return year;
}
int valueOfMonth (struct date d)
{
    int month;
    if (d.month <= 2)
        month = d.month + 13;
    else
        month = d.month + 1;
    return month;
}
int days (void)
{
    int valueOfYear (struct date d);
    int valueOfMonth (struct date d);
    int days;
    days = (1461 * valueOfYear (d.year)) / 4 + (153 * valueOfMonth(d.month)) / 5 + d.day;
    return days;
}
int main (void)
{
    struct date value1, value2;
    printf ("输入第一组日期(日 月 年):");
    scanf ("%i%i%i", &value1.day, &value1.month, &value1.year);
    int N1 = days();
    printf ("输入第二组日期(日 月 年):");
    scanf ("%i%i%i", &value2.day, &value2.month, &value2.year);
    int N2 = days();
    int N = N2 - N1;
    printf ("i%\n", N);
    return 0;
  
}










2010-06-10 20:06
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
收藏
得分:0 
为啥没人搭理我,都忙着看球了么
2010-06-11 09:21
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
收藏
得分:0 
人比较笨,8楼9楼说明白点吧
2010-06-12 02:44
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
收藏
得分:0 
程序代码:
days = (1461 * valueOfYear (d)) / 4 + (153 * valueOfMonth(d)) / 5 + d.day; 


这里两个vallueOfYear(d),怎么判断哪个是计算年份,哪个是计算月份的?

另外谁能告诉我怎么才能让光标从这个该死的程序框里跳出来!


[ 本帖最后由 ilsoviet1917 于 2010-6-12 02:48 编辑 ]
2010-06-12 02:46
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
收藏
得分:0 
没人搭理,顶出来~
2010-06-18 20:50
快速回复:请问有没有什么能计算任意两个日期之间的天数?
数据加载中...
 
   



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

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