#include<iostream>
#include<string>
#include<cstring>
using namespace std; class Date
{
private:
int year;
int month;
int day;
public:
void get()
{
int a,b,c;
cin>>a;
getchar();
cin>>b;
getchar();
cin>>c;
year=a;
month=b;
day=c;
return;
}
friend int days(Date a,Date b);
}; int days(Date a,Date b)
{
int day1=;
Date temp;
if((a.year<b.year)||((a.year==b.year)&&(a.month<b.month))||((a.year==b.year)&&(a.month==b.month)&&(a.day<b.day)))
{
temp=a;
a=b;
b=temp;//保证a比b日期靠后
}
if(a.year!=b.year)
{
day1+=(a.year-b.year-)*;//不考虑闰年和不完整年的整年天数
day1+=((((a.year-)/) - ((a.year-)/) + ((a.year-)/))-(((b.year-)/) - ((b.year-)/) + ((b.year-)/)));//期间闰年天数
for(int i=b.month;i<=;i++)
{
switch(i)
{
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
}
}
day1-=b.day;
for(int i=a.month-;i>=;i--)
{
switch(i)
{
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
}
}
day1+=a.day;
if(((b.year%==&&b.year%!=)||(b.year%==))&&(b.month>))
day1-=;
if(((a.year%==&&a.year%!=)||(a.year%==))&&(a.month>))
day1+=;
}
else
{
for(int i=b.month;i<a.month;i++)
{
switch(i)
{
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
case :
{
day1+=;
break;
}
}
}
day1+=a.day;
day1-=b.day;
if(b.month==&&b.day==)
day1++;
if(((a.year%==&&a.year%!=)||(a.year%==))&&(b.month<=&&b.day!=&&a.month>))
{
day1++;
}
}
return day1;
} int main()
{
Date y1,y2;
y1.get();
y2.get();
cout<<days(y1,y2);
return ;
}

C++练习 | 计算两日期之间天数差的更多相关文章

  1. java:通过Calendar类正确计算两日期之间的间隔

    在开发Android应用时偶然需要用到一个提示用户已用天数的功能,从实现上来看无非就是持久化存入用户第一次使用应用的时间firstTime(通过SharedPreferences .xml.sqlit ...

  2. iOS 时间戳和时间互换,计算两日期相隔天数

    /*  *获取当前系统时间的时间戳  */ +(NSInteger)getNowTimestamp;   /**  * 获取当前时间  */ + (NSString *)getNowTimeTampF ...

  3. MySql计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数

    MySql计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数 计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过MySql内置的函数 TimeStampDiff() ...

  4. js计算两个日期的天数差值

    js计算两个日期的天数差值 通过两个日期计算这两个日期之间的天数差值 /** * 计算天数差的函数,通用 * @param sDate1 * @param sDate2 * @returns {Num ...

  5. java中计算两个日期之间天数的程序设计。

    //用java编写出一个以下方法计算两个日期之间天数的程序设计. import java.util.regex.Matcher; import java.util.regex.Pattern; pub ...

  6. 使用LocalDateTime计算两个时间的差

    LocalDateTime now = LocalDateTime.now();System.out.println("计算两个时间的差:");LocalDateTime end ...

  7. C 语言实例 - 计算两个时间段的差值

    C 语言实例 - 计算两个时间段的差值 C 语言实例 C 语言实例 计算两个时间段的差值. 实例 #include <stdio.h> struct TIME { int seconds; ...

  8. oracle计算两个时间的差值(XX天XX时XX分XX秒)

    在工作中需要计算两个时间的差值,结束时间 - 开始时间,又不想在js里写function,也不想在java里去计算,干脆就在数据库做了一个函数来计算两个时间的差值.格式为XX天XX时XX分XX秒: 上 ...

  9. JS实现——计算两日期之差

    在网上找了个js实现的,根据相差天数计算日期和根据两个日期计算相差多少天的示例和代码: 根据相差天数计算日期: 距离: 年 月 日 相差: 天 (输入负数则往前计算) 日期是:   根据日期计算相差天 ...

随机推荐

  1. Difference between model.evaluate vs model.predict in Keras

    The  model.evaluate  function predicts the output for the given input and then computes the metrics ...

  2. Android深入理解Context(二)Activity和Service的Context创建过程

    前言 上一篇文章我们学习了Context关联类和Application Context的创建过程,这一篇我们接着来学习Activity和Service的Context创建过程.需要注意的是,本篇的知识 ...

  3. maven 超级pom位置、maven命令、构件、下载位置、手动打包位置、中央仓库ip

    1.超级pom位置 ----> 解压M2_HOME/lib/maven-model-builder-3.5.4.jar 2.运行maven 命令实际上是运行了 java 命令,因为maven插件 ...

  4. 团队项目——软件需求分析(NABCD)

    一.团队项目简介 团队名称:SmartCoder 项目名称:<一起> 二.针对 " 地图可视化查看发布的内容 " 这一特点进行 NABCD 分析 N(Need需求) 往 ...

  5. 基于 Docker 的现代软件供应链

    [编者按]本文作者为 Marc Holmes,主要介绍一项关于现代软件供应链的调查结果.本文系国内 ITOM 管理平台 OneAPM 编译呈现,以下为正文. 3 月初,为了了解软件供应链的现状以及 D ...

  6. 从.net角度分析 异步和多线程

    线程 进程 CPU目前都是多核心的,相当于一个大脑几块可以同时工作. 超线程CPU是指在一块CPU中,用虚拟方法将一个物理核心模拟成多个核心(如:一个单物理核心,模拟成二个核心,即所谓的二线程.)只有 ...

  7. RHEL7系统管理之内核管理

    1. Kdump工具 Kdump的工作机制是在内核崩溃时, 通过kexec 工具由BIOS启动一个备用内核, 由备用内核执行一系列任务,保存内存中崩溃内核的状态, 供后续故障分析用. 本文默认AMD或 ...

  8. C# 队列(Queue) 和堆栈(Stack)

    队列 (Queue)                                                                                          ...

  9. MySQL字符存储:charset-unicode-sets

    https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html 10.10.1 Unicode Character Sets MyS ...

  10. ORACLE DBA应该掌握的9个免费工具

      TOP1 : 录像机OS Watcher 如果说,作为一个Oracle维护工程师,你至少应该装一个工具在你维护的系统里,那么我首推这个.它就像银行自助取款机顶上的摄像头,默默的记录下你操作系统中的 ...