当前位置:  编程技术>c/c++/嵌入式

C语言小程序 如何判断两个日期之差

    来源: 互联网  发布时间:2014-10-18

    本文导语:  1.普通的写法 代码如下:#include int leapyear(int year){ if((year%4==0 && year%100!=0) || year%400==0)  return 1; else   return 0;}int days(int *day1, int *day2){ int i=0; int *tmp; int diff = 0; const int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if(day1[0] == day2[0])...

1.普通的写法
代码如下:

#include
int leapyear(int year)
{
 if((year%4==0 && year%100!=0) || year%400==0)
  return 1;
 else
  return 0;
}
int days(int *day1, int *day2)
{
 int i=0;
 int *tmp;
 int diff = 0;
 const int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
 if(day1[0] == day2[0])
 {
  if(day1[1] == day2[1])
  {
   diff = day1[2] - day2[2];
   diff = (diff < 0)?(-diff):diff;
  }
  else
  {
   if(day1[1] < day2[1])    //day1=1991-5-8   day2=1991-6-2
   {
    tmp = day1;      //day1=1991-6-2   day2=1991-5-8
    day1 = day2;
    day2 = tmp;
   }
   for(i=day2[1]+1; i d2->month)   //月数相等
  {
   tmp = d1;
   d1 = d2;
   d2 = d1;
  }
  else if(d1->month == d2->month)  //日期相等
  {
   if(d1->day > d2->day)
   {
    tmp = d1;
    d1 = d2;
    d2 = d1;
   }
  }
 }
 else if(d1->year > d2->year)
 {
  tmp = d1;
  d1 = d2;
  d2 = tmp;
 }
 return 0;
}
int diff(DATE *date1, DATE *date2)
{
 int i;
 int diff = 0;
 const int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
 if(date1->year == date2->year)
 {
  if(date1->month == date2->month)
  {
   diff = date2->day - date1->day;
  }
  else
  {
   for(i=date1->month+1; imonth; i++)
   {
    diff += month[i];
   }
   diff += month[date1->month] - date1->day + date2->day;
   if(leapyear(date1->year))
    if(date1->month month >2)
     diff++;
  }
 }
 else
 {
  for(i=date1->year+1; iyear; i++)
  {
   if(leapyear(i))
    diff += 366;
   else
    diff += 365;
  }
  for(i=date1->month+1; imonth] - date1->day;
  if(date1->month year))
    diff++;
  for(i=1; imonth; i++)     //date2距离年初多少天
  {
   diff += month[i];
  }
  diff += date2->day;
  if(date1->month > 2)
   if(leapyear(date2->year))
    diff++;
 }
 return diff;
}
int main()
{
 int days = 0;
 DATE day1, day2;
 DATE *date1, *date2;
 date1 = &day1;
 date2 = &day2;
 printf("输入日期:");
 scanf("%d-%d-%d",&(date1->year), &(date1->month), &(date1->day));
 printf("输入另一个日期:");
 scanf("%d-%d-%d",&date2->year, &date2->month, &date2->day);
 compare(date1, date2);
 days = diff(date1, date2);
 printf("两个日期之间共有%d天。n",days);
 return 0;
}


    
 
 

您可能感兴趣的文章:

  • c语言判断某一年是否为闰年的各种实现程序代码
  • 使用c语言判断100以内素数的示例(c语言求素数)
  • c语言有什么简单办法判断一个字符串是否是合法日期?
  • 怎样判断当前系统的语言?
  • java 的条件判断函数(类似于别的语言iif函数)
  • linux c语言如何判断一个目录是否挂载了一个文件系统呢?
  • Linux下用C语言判断用户是否输入Ctrl+C
  • 请问怎么判断一个路径是否存在(C语言)
  • C语言 判断进程是否存在的问题
  • C语言判断回文数的小例子
  • 急用!用 C 语言如何判断以太网是否通?谢谢
  • 用C语言程序判断大小端模式
  • c语言常见图片格式判断实例
  • C语言中判断int,long型等变量是否赋值的方法详解
  • C语言小程序 如何判断三角型类型
  • 多中语言实现判断客户访问用得是那个域名 然后转到对应的目录
  • c语言判断是否素数程序代码
  • 关于RH9安装默然语言以及字体的两个问题。
  • linux下创建两个进程争夺临界资源,要求用C语言边写!麻烦各位帮帮忙
  • C语言实现两个递减数列中寻找某一个数
  • c语言合并两个已排序数组的示例(c语言数组排序)
  • 交换两个文本内容的C语言代码
  • c语言:基于函数指针的两个示例分析
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • LINUX C语言中,用什么函数可以设置日期和时间?
  • 请问怎样在c语言里求得昨天的日期 yyyymmdd
  • 请问在linux中,怎样用c语言编程来实现对计算机的日期和时间的修改啊?
  • c语言中如何通过日期时间字符串得到时间戳?
  • 有谁知道JAVA语言的创建日期和作者?高分求教!
  • C语言小程序 计算第二天日期示例代码
  • 有关Sql语言中的日期格式化
  • 2013年7月和2013年8月编程语言排行榜
  • 如何在GTK2.0下实现国际化(语言选择根据自己设置的语言,不用系统的语言)
  • 2017 年热门编程语言排行榜出炉,你的语言上榜没?
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 苹果OS X和IOS下最新编程语言swift介绍
  • 求助,在linux下,c语言和汇编语言的接口是什么?
  • PHP编程语言介绍及安装测试方法
  • C语言中间语言 CIL
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • 最近学JSP,苦于HTML语言和JAVA语言太差,请教推荐几本书,thanks.
  • c语言实现MD5算法完整代码示例
  • 动态编程语言 LIME编程语言
  • 以NetBeans IDE为例介绍如何使用XML中Schema语言
  • C语言如何改变当前语言环境
  • c语言基于libpcap实现一个抓包程序过程
  • 如何在VIM中使汇编语言和C语言自动缩进?
  • HTML超文本标记语言教程及实例
  • 我安装的linux时默认语言选择的是中文,又乱码,怎么可以解决?怎么更改默认语言成英文?
  • MD5算法的C语言实现
  • Redhat9安装时语言只选择了中文,现在还能再增加其它语言的支持吗?如英文
  • HTML 脚本语言介绍及<script>标签用法
  • 请问哪里有ubuntu 9.0版本的中文语言包和KDE的中文语言包下载,我用Google搜索了很多地方都没有!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3