C++ 计算任意两个日期之间的天数
C++写的一个计算两个日期之间天数的小程序:
- #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->day = d;
- }
- //是否闰年
- int IsLeapYear(int year)
- {
- return ((year%4==0) && (year%100!=0)||year%400==0);
- }
- //得到date.month的最大天数
- int GetLastDay(tagDate date)
- {
- int num;
- switch(date.month)
- {
- case 1:
- case 3:
- case 5:
- case 7:
- case 8:
- case 10:
- case 12:
- num=31;
- break;
- case 2:
- num = 28+IsLeapYear(date.year);
- break;
- default:
- num = 30;
- }
- return num;
- }
- //日期是否合法
- int IsDateValid(tagDate date)
- {
- if(date.year <0 || date.month <1 || date.month> 12)
- return 0;
- if(date.day <1 || date.day> GetLastDay(date))
- return 0;
- return 1;
- }
- //date+1
- void AddDay(tagDate *date)
- {
- date->day++;
- if(date->day > GetLastDay(*date))
- {
- date->day = 1;
- date->month++;
- if(date->month > 12)
- {
- date->month = 1;
- date->year++;
- }
- }
- }
- //date1比date2小返回值为1,否则为0
- int Compare(tagDate date1, tagDate date2)
- {
- if(date1.year < date2.year)
- return 1;
- if(date1.year <= date2.year && date1.month < date2.month)
- return 1;
- if(date1.year <= date2.year && date1.month <= date2.month && date1.day < date2.day)
- return 1;
- return 0;
- }
- //计算两个日期的间隔天数
- long DateDiff(tagDate date1, tagDate date2)
- {
- long delta = 0;
- tagDate date3;
- //若date1 > date2,交换date1,date2
- if(!Compare(date1, date2))
- {
- date3 = date2;
- date2 = date1;
- date1 = date3;
- }
- //date1比date2少时,date1日期加1
- while(Compare(date1,date2))
- {
- AddDay(&date1);
- delta++;
- }
- return delta;
- }
- void main()
- {
- tagDate date1, date2;
- int y, m, d;
- system("cls");
- while(1)
- {
- puts("\nInput date1\t ");
- scanf("%d,%d,%d", &y, &m, &d);
- SetDate(y, m, d, &date1);
- if(!IsDateValid(date1))
- {
- puts( "date1 is invalid !");
- exit(1);
- }
- puts("\nInput date2\t ");
- scanf("%d,%d,%d", &y, &m, &d);
- SetDate(y, m, d, &date2);
- if(!IsDateValid(date2))
- {
- puts( "date2 is invalid !");
- exit(1);
- }
- //
- printf("\nResult : [%ld]", DateDiff(date1,date2));
- }
- }
https://blog.csdn.net/hellokandy/article/details/52194332
C++ 计算任意两个日期之间的天数的更多相关文章
- iOS 计算两个日期之间的天数问题
//获取当前时间若干年.月.日之后的时间 + (NSDate *)dateWithFromDate:(NSDate *)date years:(NSInteger)years months:(NSIn ...
- JS计算两个日期之间的天数
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- mysql计算两个日期之间的天数
MYSQL自带函数计算给定的两个日期的间隔天数 有两个途径可获得 1.利用TO_DAYS函数 select to_days(now()) - to_days('20120512') 2 ...
- JS计算两个日期之间的天数,时间差计算
1.日期之间的天数计算 //计算天数差的函数,通用 function DateDiff(sDate1, sDate2) { //sDate1和sDate2是2017-9-25格式 var aDate, ...
- java计算两个日期之间的天数,排除节假日和周末
如题所说,计算两个日期之前的天数,排除节假日和周末.这里天数的类型为double,因为该功能实现的是请假天数的计算,有请一上午假的为0.5天. 不够很坑的是每个日期都要查询数据库,感觉很浪费时间. 原 ...
- element ui 日期控件范围时间限制记录、以及计算两个日期之间的天数
日期的筛选经常会有最小的日期选择,例如:当前日期 :clearable="false" :picker-options="pickerOptions0" val ...
- js 求两个日期之间相差天数
//求两个日期之间的相差天数 function daysBetween(DateOne, DateTwo) { var OneMonth = DateOne.substring(5, DateOne. ...
- 计算两个日期之间的天数差C++/java
1--Java 分析:调用java中Calendar类 int days(Date date1,Date date2){ Calendar cal = new Calendar.getInstance ...
- JavaScript实现计算两个日期之间的天数
以“yyyy-MM-dd”格式为例,现在有两个日期,分别为“2006-01-01”,“2007-05-20”. 1.调用Date.parser()方法,将字符串格式的时间戳转换为Date类型时间对象: ...
随机推荐
- 【2017"百度之星"程序设计大赛 - 初赛(A)】数据分割
[链接]http://acm.hdu.edu.cn/showproblem.php?pid=6109 [题意] 在这里写题意 [题解] 要处理的关系越多,肯定就越容易错. ->单调性. 根据这个 ...
- Vue 学习记录<1>
1.环境搭建:(前提node.js搭建) # 全局安装 vue-cli $ npm install --global vue-cli # 创建一个基于 webpack 模板的新项目 $ vue i ...
- android开发者要懂得问题答案
我在网上看了一下有些人在博客上提出一些什么android开发者必须懂得问题,可是就是没有答案,所以我就把这些问题拷贝过来了.顺便也把全部的答案加上,为了让很多其它的开发者高速的找到答案,谢谢! 以下的 ...
- js进阶 14-8 表单序列化函数serializeArray()和serialize()的区别是什么
js进阶 14-8 表单序列化函数serializeArray()和serialize()的区别是什么 一.总结 一句话总结:两者都是对表单进行序列化,serializeArray()返回的是json ...
- Docker---(3)Docker常用命令
原文:Docker---(3)Docker常用命令 版权声明:欢迎转载,请标明出处,如有问题,欢迎指正!谢谢!微信:w1186355422 https://blog.csdn.net/weixin_3 ...
- mysql 语句优化心得
排序导致性能较慢 优化策略:1.尽量不使用排序 2.只查有索引的结果然后 内连接查询 select bizchance0_.* from biz_chance bizchance0_, biz_b ...
- 微服务实践(七):从单体式架构迁移到微服务架构 - DockOne.io
原文:微服务实践(七):从单体式架构迁移到微服务架构 - DockOne.io [编者的话]这是用微服务开发应用系列博客的第七篇也是最后一篇.第一篇中介绍了微服务架构模式,并且讨论了微服架构的优缺点: ...
- vscode markdown-all-in-one 源码编译成vsix
https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one 有链接 Download Extensio ...
- bow lsa plsa
Bag-of-Words (BoW) 模型是NLP和IR领域中的一个基本假设.在这个模型中,一个文档(document)被表示为一组单词(word/term)的无序组合,而忽略了语法或者词序的部分.B ...
- bootstrap课程1 bootstrap为什么这么火
bootstrap课程1 bootstrap为什么这么火 一.总结 一句话总结:响应式,样式多,功能多. 1.bootstrap通过什么药实现响应式? 响应式web布局是让用户通过不同尺寸的浏览器都可 ...