计算两个日期之间的天数差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.abs(time1-time2)/(24*3600*1000);
return Math.abs(day1-day2); }
2--java
int days(Date date1,Date date2){
long time1 = Math.abs(date1.getTime()-date2.getTime());
return (int)time1/(24*3600*1000); }
分析:首先要知道关于闰年的概念,每四年一润,四百年润,且不能被100整除。因为,闰年二月有29天,全年共计366天。
伪代码:首先将日期字符串的年,月,日分开,类型为yyyy-mm-dd,得到两个日期,year1,month1,day1,year2,month2,day2
如果年份,月份相同:
return day1-day2;(大减小)
如果年份相同,月份不同:
计算date1,该年过了多少天D1;date2,该年过了多少天D2
return D1-D2;
如果,年份不同:
D1=date1 是该年的第多少天
D2=date2距离该年该年结束还有多少天
D3=两个年份之间相差的整年数是多少天
return D1+D2+D
#include <iostream> using namespace std; public bool stringToDate(string date,int &year,int &month,int &day){
year = atoi(date.substr(0,4).c_str());
month=atio(date.substr(5,2).c_str());
day=atio(date.substr(8,2).c_str());
Day[12]={31,29,31,30,31,30,31,31,30,31,30,31};
if(isLear(year))
Day[1]=29;
return year>0&&month>0&&month<=12&&day<=Day[month-1];
} public bool isLeap(int year){
return ((year%4==0)||(year%400==0))&&(year&100!=0);
} public int daysInYear(int year,int month ,int day){ int days = day;
int Day[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeap(year))
Day[1]=29;
for(int i=0;i<month-1;i++){
days+=Day[i];
}
return days;
} public between_days(string date1,string date2){
if(stringToDate(date1,int &year1,int &month1,int &day1)&&stringToDate(string date2,int &year2,int &month2,int &day2)){
if(year1==year2&&month1==month2){
return day1>day2?day1-day2:day2-day1;
} else if(year1==year2){
int d1 = daysInYear(year1,month1,day1);
int d2 = daysInYear(year2,month2,day2);
return d1>d2?d1-d2:d2-d1;
} else{
if(year1<year2){
swap(year1,year2);
swap(month1,month2);
swap(day1,day2);
}
int D1=0;
for(int j=year2+1;j<year1;j++){
if(isLeap(j))
D1+=366;
else
D1+=365;
}
int D2=daysInYear(year1,month1,day1);
if(isLeap(year2))
D2=D2+366-daysInYear(year2,month2,day2);
else
D2=D2+365-daysInYear(year2,month2,day2);
return D1+D2;
}
}
}
计算两个日期之间的天数差C++/java的更多相关文章
- As3 计算两个日期之间的天数差
/*日期转YYYYMMDD*/ formDate.fullYear+""+(formDate.month<10?("0"+formDate.month): ...
- JS计算两个日期之间的天数
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- c#后台计算2个日期之间的天数差
/ 计算2个日期之间的天数差 DateTime dt1 = Convert.DateTime("2007-8-1"); DateTime dt2 = Convert.DateTi ...
- iOS 计算两个日期之间的天数问题
//获取当前时间若干年.月.日之后的时间 + (NSDate *)dateWithFromDate:(NSDate *)date years:(NSInteger)years months:(NSIn ...
- java计算两个日期之间的天数,排除节假日和周末
如题所说,计算两个日期之前的天数,排除节假日和周末.这里天数的类型为double,因为该功能实现的是请假天数的计算,有请一上午假的为0.5天. 不够很坑的是每个日期都要查询数据库,感觉很浪费时间. 原 ...
- element ui 日期控件范围时间限制记录、以及计算两个日期之间的天数
日期的筛选经常会有最小的日期选择,例如:当前日期 :clearable="false" :picker-options="pickerOptions0" val ...
- 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, ...
- JavaScript实现计算两个日期之间的天数
以“yyyy-MM-dd”格式为例,现在有两个日期,分别为“2006-01-01”,“2007-05-20”. 1.调用Date.parser()方法,将字符串格式的时间戳转换为Date类型时间对象: ...
随机推荐
- js中arr.sort的用法
sort(sortfunction)为JS的数组对象(Array)的一个方法,提供排序功能 参数 sortFunction 为可选项,是用来确定排序原则的js函数, 这个函数有两个参数,分别代表每次排 ...
- js中(break,continue,return)的区别
break 一般用于跳出整个循环(for,while) continue 跳出本次循环,进入下一次循环 return 只能出现在函数体内,一旦执行return,后面的代码将不会执行,经常用retur ...
- 【洛谷3527】[POI2011] MET-Meteors(树状数组+整体二分)
点此看题面 大致题意: 一颗星球被分为\(M\)份,分别属于\(N\)个国家,有\(K\)场陨石雨,第\(i\)个国家希望收集\(P_i\)颗陨石,问其至少要在第几次陨石雨后才能达到目标. 关于整体二 ...
- 【转】chrome浏览器的跨域设置——包括版本49前后两种设置
做前后分离的webapp开发的时候,出于一些原因往往需要将浏览器设置成支持跨域的模式,好在chrome浏览器就是支持可跨域的设置,网上也有很多chrome跨域设置教程.但是新版本的chrome浏览器提 ...
- 2017.12.20 Java中的 IO/XML学习总结 File类详细
IO / XML 一.File类 1.定义/概念 Java是面向对象的语言,要想把数据存到文件中,就必须要有一个对象表示这个文件.File类的作用就是代表一个特定的文件或目录,并提供了若干方法对这些文 ...
- 【luogu P5022 旅行】 题解
题目连接:https://www.luogu.org/problemnew/show/P5022 \(NOIP2018 DAY2T1\) 考场上只写了60分,很容易想到当 m = n - 1 时的树的 ...
- 国产中标麒麟Linux部署dotnet core 环境并运行项目 (三) 部署运行WEB API项目
部署dotnet Core Web API 上一步的文章,是我们公司最核心的一个ORM组件,在中标麒麟系统完成了一个插入数据的任务,这一步是将正式的从dot net framework 迁移到 dot ...
- [未完] term.js 记录遇到的问题
参考博文:https://www.cnblogs.com/zhenfei-jiang/p/7065038.html 按照网上查找的资料敲了代码 term.on('data', function(dat ...
- sendmail安装与配置
一.安装sendmail与mail 1.安装sendmail: 1) centos下可以安装命令:yum -y install sendmail 2) 安装完后启动sendmail命令:servic ...
- 汇编 if else 例子
.text .global _start _start: mov r1,#1 mov r2,#2 cmp r1, r2 bgt branch1 add r3,r1,r2 b end branc ...