【C语言】 计算任意2个日期之间的天数

【本文原创于Paul的博客园技术博客。】

【本文欢迎转载,转载请以链接形式注明出处。】

【本博客所有文章都经博主精心整理,请尊重我的劳动成果。】

【C语言】
计算任意2个日期之间的天数

1.
要判断时间的合法性
(如果不想判断也可以)

2.
判断两个日期之间的天数

判断输入的年份是不是闰年;年份是否相同;月份是否相同;日是否相同?
同年同月最好计算,日数相减就出来了;同年不同月也好计算,计算中间相隔几个月,转换成天数,小的日期距月底有多少天,大的日期距月初多少天,三个数相加;关键是不同年的日期计算:先计算中间相隔几年,这几年的天数就出来了,再计算小的日期到年底有多少天,其次计算大的日期距年初有多少天,三个数相加就可以了

代码如下:


 1 /*求所在月份的天数*/
2 int daysMonth(int year,int month,int day)
3 {
4
5 int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
6 int i,sum=0;
7 for(i=0;i<month;i++)
8 sum+=days[i];
9 if(month>2) /*如果是闰年则2月加一天*/
10 if((year%4==0)&&(year%100!=0)||(year%400==0))
11 sum+=1;
12 sum+=day;
13 return sum;
14 }
15 /*交换位置,避免负值*/
16 void swap(int x1,int x2)
17 {
18 int tmp=x1;
19 x1=x2;
20 x2=tmp;
21 }
22 long countDate(int y1,int m1,int d1,int y2,int m2,int d2)
23 {
24 int daysyear1,daysyear2;
25 long totalDays=0;
26 int total_day1;
27 int tmpYear;
28 int tmpDays;
29 printf("The first Date is %ld-%ld-%ld/n",y1,m1,d1);
30 printf("The second Date is %ld-%ld-%ld/n",y2,m2,d2);
31 if(y1>y2)
32 {
33 swap(y1,y2);
34 swap(m1,m2);
35 swap(d1,d2);
36 }
37 if(y1==y2)
38 {
39 daysyear1=daysMonth(y1,m1,d1);
40 daysyear2=daysMonth(y2,m2,d2);
41 totalDays=abs(daysyear1-daysyear2)+1;
42 printf("totalDays is %ld/n",totalDays-1);
43 }
44 else
45 {
46 daysyear1=daysMonth(y1,m1,d1);
47 total_day1=365-daysyear1+1;
48 if(m1<=2)
49 if(y1%4==0&&(y1%100!=0)||(y1%400==0))
50 total_day1+=1;
51 totalDays+=total_day1;
52 tmpYear=y1;
53 while(++tmpYear<y2)
54 {
55 tmpDays=365;
56 if((tmpYear%4==0)&&(tmpYear%100!=0)||(tmpYear%400==0))
57 tmpDays+=1;
58 totalDays+=tmpDays;
59 }
60 daysyear2=daysMonth(y2,m2,d2);
61 totalDays+=daysyear2;
62 }
63 return totalDays-1;
64 printf("totalDays is %ld/n",totalDays-1);
65 }
66 int main()
67 {
68 int y1,m1,d1,y2,m2,d2;
69 printf("Plsase input Date,for example 2008-8-1,2008-8-8:/n");
70 scanf("%ld-%ld-%ld,%ld-%ld-%ld",&y1,&m1,&d1,&y2,&m2,&d2);
71 countDate(y1,m1,d1,y2,m2,d2);
72 return 0;
73 }

【C语言】 计算任意2个日期之间的天数,布布扣,bubuko.com

时间: 2024-09-29 09:06:11

【C语言】 计算任意2个日期之间的天数的相关文章

C++ 计算任意两个日期之间的天数

C++写的一个计算两个日期之间天数的小程序: [cpp] view plain copy #include <Windows.h> #include <stdio.h> struct tagDate { int year; int month; int day; }; //设置日期 void SetDate(int y, int m, int d, tagDate *date) { date->year = y; date->month = m; date->da

25:计算两个日期之间的天数

25:计算两个日期之间的天数 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 给定两个日期,计算相差的天数.比如2010-1-1和2010-1-3相差2天. 输入 共两行:第一行包含三个整数startYear,startMonth,startDay,分别是起始年.月.日.第二行包含三个整数endYear,endMonth,endDay,分别是结束年.月.日.相邻两个整数之间用单个空格隔开. 年份范围在1~3000.保证日期正确且结束日期不早于起始日期.

C++计算两个日期之间的天数

计算两个日期之间的天数的思路: 首先,判断输入的年份是不是闰年.年份是否相同?月份是否相同?日是否相同? 日月年有三种可能的情况: 同年同月.日数相减就出来了. 同年不同月.计算日期小的月份到年初的天数,计算日期大的月份到年初的天数.再把两个日期向减 不同年.先计算中间相隔几年,计算较小的日期到年底有多少天,再计算较大的日期距年初有多少天,将三个数向加. 代码如下: 1 #include<iostream> 2 #include<CString> 3 #include<cma

计算两个日期之间的天数

//计算两个日期之间的天数 - (NSInteger)calcDaysFromBegin:(NSDate *)beginDate end:(NSDate *)endDate { NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; //取两个日期对象的时间间隔: NSTimeInterval time= [endD

JS计算两个日期之间的天数

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

java计算两个日期之间相差天数和相隔天数详解

大家看到文章标题"两个日期之间相差天数和相隔天数",是否有疑惑呢!从中文字面理解,"相差"和"相隔"是有区别的,然而就是这些区别害死很多人,却没有发现,在大量新增统计时是差之毫厘谬以千里,我能都发现是因为一个偶然的机会,一个项目运行几年却没有人发现,我在其中还不到一年,一开始写这些这代码的人根本没分清楚什么情况就写了,怪不得统计的数据总是有那么细微的差别,在于日期"相差"和"相隔"有某些特定的情况下是相等的

武汉科技大学ACM :1010: 零起点学算法12——求2个日期之间的天数

Problem Description 水题 Input 输入2个日期,日期按照年月日,年月日之间用符号-隔开(题目包含多组数据) Output 求出这2个日期之间的天数(不包括自身),每组测试数据一行 Sample Input 2011-1-1 2011-1-5 Sample Output 3 HINT 为了简单之见,本题假设输入的是同年同月的2个日期,且第一个日期小于第2个日期 1 #include<stdio.h> 2 3 4 5 int main() 6 7 { 8 9 int y1,

1105: 零起点学算法12——求2个日期之间的天数

1105: 零起点学算法12--求2个日期之间的天数 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 4404  Accepted: 1985[Submit][Status][Web Board] Description 水题 Input 输入2个日期,日期按照年月日,年月日之间用符号-隔开(题目包含多组数据) Output 求出这2个日期之间的天数(不包括自身),每组测试数据一行 Sample I

js 求两个日期之间相差天数

//求两个日期之间的相差天数 function daysBetween(DateOne, DateTwo) { var OneMonth = DateOne.substring(5, DateOne.lastIndexOf('/')); var OneDay = DateOne.substring(DateOne.length, DateOne.lastIndexOf('/') + 1); var OneYear = DateOne.substring(0, DateOne.indexOf('/