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

C++写的一个计算两个日期之间天数的小程序:

[cpp] view plain copy

  1. #include <Windows.h>
  2. #include <stdio.h>
  3. struct tagDate
  4. {
  5. int year;
  6. int month;
  7. int day;
  8. };
  9. //设置日期
  10. void SetDate(int y, int m, int d, tagDate *date)
  11. {
  12. date->year = y;
  13. date->month = m;
  14. date->day = d;
  15. }
  16. //是否闰年
  17. int IsLeapYear(int year)
  18. {
  19. return ((year%4==0) && (year%100!=0)||year%400==0);
  20. }
  21. //得到date.month的最大天数
  22. int GetLastDay(tagDate date)
  23. {
  24. int num;
  25. switch(date.month)
  26. {
  27. case 1:
  28. case 3:
  29. case 5:
  30. case 7:
  31. case 8:
  32. case 10:
  33. case 12:
  34. num=31;
  35. break;
  36. case 2:
  37. num = 28+IsLeapYear(date.year);
  38. break;
  39. default:
  40. num = 30;
  41. }
  42. return num;
  43. }
  44. //日期是否合法
  45. int IsDateValid(tagDate date)
  46. {
  47. if(date.year <0 || date.month <1 || date.month> 12)
  48. return 0;
  49. if(date.day <1 || date.day> GetLastDay(date))
  50. return 0;
  51. return 1;
  52. }
  53. //date+1
  54. void AddDay(tagDate *date)
  55. {
  56. date->day++;
  57. if(date->day > GetLastDay(*date))
  58. {
  59. date->day = 1;
  60. date->month++;
  61. if(date->month > 12)
  62. {
  63. date->month = 1;
  64. date->year++;
  65. }
  66. }
  67. }
  68. //date1比date2小返回值为1,否则为0
  69. int Compare(tagDate date1, tagDate date2)
  70. {
  71. if(date1.year < date2.year)
  72. return 1;
  73. if(date1.year <= date2.year && date1.month < date2.month)
  74. return 1;
  75. if(date1.year <= date2.year && date1.month <= date2.month && date1.day < date2.day)
  76. return 1;
  77. return 0;
  78. }
  79. //计算两个日期的间隔天数
  80. long DateDiff(tagDate date1, tagDate date2)
  81. {
  82. long delta = 0;
  83. tagDate date3;
  84. //若date1 > date2,交换date1,date2
  85. if(!Compare(date1, date2))
  86. {
  87. date3 = date2;
  88. date2 = date1;
  89. date1 = date3;
  90. }
  91. //date1比date2少时,date1日期加1
  92. while(Compare(date1,date2))
  93. {
  94. AddDay(&date1);
  95. delta++;
  96. }
  97. return delta;
  98. }
  99. void main()
  100. {
  101. tagDate date1, date2;
  102. int y, m, d;
  103. system("cls");
  104. while(1)
  105. {
  106. puts("\nInput   date1\t ");
  107. scanf("%d,%d,%d", &y, &m, &d);
  108. SetDate(y, m, d, &date1);
  109. if(!IsDateValid(date1))
  110. {
  111. puts( "date1   is   invalid !");
  112. exit(1);
  113. }
  114. puts("\nInput   date2\t ");
  115. scanf("%d,%d,%d", &y, &m, &d);
  116. SetDate(y, m, d, &date2);
  117. if(!IsDateValid(date2))
  118. {
  119. puts( "date2   is   invalid !");
  120. exit(1);
  121. }
  122. //
  123. printf("\nResult : [%ld]", DateDiff(date1,date2));
  124. }
  125. }

https://blog.csdn.net/hellokandy/article/details/52194332

原文地址:https://www.cnblogs.com/findumars/p/8732310.html

时间: 2024-10-05 04:19:33

C++ 计算任意两个日期之间的天数的相关文章

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

[本文原创于Paul的博客园技术博客.] [本文欢迎转载,转载请以链接形式注明出处.] [本博客所有文章都经博主精心整理,请尊重我的劳动成果.] [C语言] 计算任意2个日期之间的天数 1. 要判断时间的合法性(如果不想判断也可以) 2. 判断两个日期之间的天数 判断输入的年份是不是闰年:年份是否相同:月份是否相同:日是否相同?同年同月最好计算,日数相减就出来了:同年不同月也好计算,计算中间相隔几个月,转换成天数,小的日期距月底有多少天,大的日期距月初多少天,三个数相加:关键是不同年的日期计算:

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计算两个日期之间相差天数和相隔天数详解

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

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('/

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

1--Java 分析:调用java中Calendar类 int days(Date date1,Date date2){ Calendar cal = new Calendar.getInstance(); cal.setTime(date1); int time1 = cal.get(Calendar.DAY_OF_YEAR); cal.setTime(date2); int time2 = cal.get(Calendar.DAY_OF_YEAR); //long days = Math.a

As3 计算两个日期之间的天数差

? 1 /*日期转YYYYMMDD*/ ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79