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的更多相关文章

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

    /*日期转YYYYMMDD*/ formDate.fullYear+""+(formDate.month<10?("0"+formDate.month): ...

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

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. c#后台计算2个日期之间的天数差

    / 计算2个日期之间的天数差 DateTime dt1 = Convert.DateTime("2007-8-1");  DateTime dt2 = Convert.DateTi ...

  4. iOS 计算两个日期之间的天数问题

    //获取当前时间若干年.月.日之后的时间 + (NSDate *)dateWithFromDate:(NSDate *)date years:(NSInteger)years months:(NSIn ...

  5. java计算两个日期之间的天数,排除节假日和周末

    如题所说,计算两个日期之前的天数,排除节假日和周末.这里天数的类型为double,因为该功能实现的是请假天数的计算,有请一上午假的为0.5天. 不够很坑的是每个日期都要查询数据库,感觉很浪费时间. 原 ...

  6. element ui 日期控件范围时间限制记录、以及计算两个日期之间的天数

    日期的筛选经常会有最小的日期选择,例如:当前日期 :clearable="false" :picker-options="pickerOptions0" val ...

  7. mysql计算两个日期之间的天数

    MYSQL自带函数计算给定的两个日期的间隔天数   有两个途径可获得   1.利用TO_DAYS函数   select to_days(now()) - to_days('20120512')   2 ...

  8. JS计算两个日期之间的天数,时间差计算

    1.日期之间的天数计算 //计算天数差的函数,通用 function DateDiff(sDate1, sDate2) { //sDate1和sDate2是2017-9-25格式 var aDate, ...

  9. JavaScript实现计算两个日期之间的天数

    以“yyyy-MM-dd”格式为例,现在有两个日期,分别为“2006-01-01”,“2007-05-20”. 1.调用Date.parser()方法,将字符串格式的时间戳转换为Date类型时间对象: ...

随机推荐

  1. 手把手教你用Docker部署一个MongoDB集群

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引 ...

  2. [转载]AngularJS入门教程03:迭代器

    我们在上一步做了很多基础性的训练,所以现在我们可以来做一些简单的事情喽.我们要加入全文检索功能(没错,这个真的非常简单!).同时,我们也会写一个端到端测试,因为一个好的端到端测试可以帮上很大忙.它监视 ...

  3. 2018.6.15 Java对象序列化详解

    一.定义 Serializable 序列化:把Java对象转换为字节序列的过程. 反序列化:把字节序列恢复为Java对象的过程. ObjectOutputStream对象输出流 可以将实现了Seria ...

  4. React后台管理系统- rc-pagination分页组件封装

    1.用户列表页面使用的rc-pagination分页组件 Github地址: https://github.com/react-component/pagination 2.安装 cnpm insta ...

  5. 流行JAVA开发工具

    流行JAVA开发工具 正所谓工欲善其事必先利其器,我们在开发java语言过程中同样需要依款不错的开发工具,目前市场上的IDE很多,本文为大家推荐以下下几款java开发工具: Eclipse(推荐):另 ...

  6. SummerVocation_Learning--java的多线程实现

    java的线程是通过java.lang.Thread类来实现的. 可以通过创建Thread的实例来创建新的线程. 每个线程都是通过某个特定Thread对象所对应的方法run()来完成操作,方法run( ...

  7. mysql优化之explain各参数详解:

    explain简介 explain命令可以获取Mysql如何执行select语句的信息,包括在select语句执行过程中表如何连接和连接的顺序.当我们想知道这个表操作是索引查询还是全表扫描时,我们就可 ...

  8. node 日志分割-pm2-logrotate

    使用pm2-logrotate进行pm2日志切割,测试是按照文件大小1k切割: 安装 pm2 install pm2-logrotate 设置 重启 截图 截图是按照文件大小分割,如果文件小于设置分割 ...

  9. 爬山算法 | Java版HA_TSP

    嗯哼,今天记录下采用Java编写的爬山算法(Hill Algorithm)求解TSP问题. 爬山算法与其他智能算法类似,是一种用来求解多峰函数最值的算法,爬山算法的基本思想是新解不劣于当前解则转移,否 ...

  10. Maven web项目的项目如何创建

    1.eclipse--创建maven项目--选择打包方式为war 2.此时项目还缺少一些东西,比如web-inf,web.xml配置文件之类的 3.项目右键-properties-project fa ...