大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Java技巧 > 两个日期之间的天数--[编程珠玑]

两个日期之间的天数--[编程珠玑]


[摘要]本文主要是对两个日期之间的天数--[编程珠玑]的讲解,希望对大家学习两个日期之间的天数--[编程珠玑]有所帮助。

  今天翻了下《编程珠玑》,其实这本书感觉对自己还是有点深,吃不透啊。

  看到一题,有一小问是给定两个日子,计算这两个日子的天数;

  碰巧前几天做web作业也有差不多这题的,不过那一题直接调用系统函数的,两个日期一减/1000/60/60/24就是天数了;

  c中还真不知道有没有这样强大的函数,如果有,各位告诉我一下;

  说一下我实现的吧,给了两个日期,分别求出由公元元年开始过的天数,然后相减,即是相差的天数(正负不计较,大家都明白的);

  ***********/

  #include <STDIO.H>

  int isleapyear(int year)  //是否是闰年

  {

  return ((year % 4 == 0 && year % 100 != 0)|| year % 400 == 0);

  }

  int sum(int year, int month, int day)

  {

  int mon[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

  int sum = (year - 1) * 365;  //自公元1年来的天数

  int i;

  sum += (year - 1) / 4 + 1;  //能被4整除的都加上

  sum -= (year - 1) / 100 + 1;  //其中被100整除的不是闰年

  sum += (year - 1) / 400 + 1;  //实际上能被400整除的即为闰年

  for(i = 0; i < month - 1; ++i)  //将本年的剩下的整月加上

  sum += mon[i];

  if(isleapyear(year) == 1 && month > 2)  //本年是否闰2月

  ++sum;

  sum += day;  //本月的日子加上

  return sum;

  }

  int main()

  {

  printf("%d\n", sum(2013, 11, 1) - sum(2013, 9, 30));

  return 0;

  }

  </STDIO.H>

  sum中求得的就是由公元元年以来的日子;

  结果如下:

  32

  Process returned 0 (0x0)   execution time : 0.331 s

  Press any key to continue.

  欢迎各位提点…o(∩_∩)o



相关评论