description

有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。

Input

有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD

Output

每组数据输出一行,即日期差值

Sample Input Copy

20130101
20130105

Sample Output Copy

5

idea

  • 闰年:2月29天,一年366天
    平年:2月28天,一年365天
    判断平年or闰年:
    能被4整除但不能被100整除 或者 能被400整除为闰年,
    否则为平年
  • 注意日期相同为一天
    例如20220107-20220107相差一天(7号共一天
    20220107-20220108相差两天(7号和8号共两天

solution1

#include <cstdio>
#include <algorithm>
using namespace std;
bool leap(int i){
if(i % 400 == 0 || (i % 4 == 0 && i % 100 != 0))
return true;
else
return false;
}
int main(){
int t[2], y[2], m[2], d[2], day, month[7] = {1, 3, 5, 7, 8, 10, 12}, temp, flag, flag1;
while(scanf("%d%d", &t[0], &t[1]) != EOF){
flag = 1;
temp = 0;
if(t[0] > t[1])
swap(t[0], t[1]);
for(int i = 0; i < 2; i++){
y[i] = t[i] / 10000;
m[i] = t[i] % 10000 / 100;
d[i] = t[i] % 100;
}
day = (y[1] - y[0])*365;
for(int i = y[0]; i < y[1]; i++)//闰年366天,多一天
if(leap(i))
day++;
if(m[0] > m[1]){
flag = -1;
swap(m[0], m[1]);
swap(y[0], y[1]);
}
for(int i = m[0]; i < m[1]; i++){
flag1 = 0;
for(int j = 0; j < 7; j++){
if(i == month[j]){
temp += 31;
flag1 = 1;
break;
}
}
if(i == 2 && !flag1){
if(leap(y[1]))
temp += 29;
else
temp += 28;
}
else if(!flag1)
temp += 30;
}
day += flag*temp + d[1] - d[0] + 1;
printf("%d\n", day);
}
return 0;
}

solution2

#include <cstdio>
#include <algorithm>
using namespace std;
int leap(int i){
if(i % 400 == 0 || (i % 4 == 0 && i % 100 != 0))
return 0;
else
return 1;
}
int main(){
int t[2], y[2], m[2], d[2], day, month[13][2] = {{0}, {31, 31}, {29, 28}, {31, 31}, {30, 30}, {31, 31}, {30, 30}, {31, 31}, {31, 31}, {30, 30}, {31, 31}, {30, 30}, {31, 31}};
while(scanf("%d%d", &t[0], &t[1]) != EOF){
int temp = 0, flag = 1;
if(t[0] > t[1])
swap(t[0], t[1]);
for(int i = 0; i < 2; i++){
y[i] = t[i] / 10000;
m[i] = t[i] % 10000 / 100;
d[i] = t[i] % 100;
}
day = (y[1] - y[0])*365;
for(int i = y[0]; i < y[1]; i++)//闰年366天,多一天
if(!leap(i))
day++;
if(m[0] > m[1]){
flag = -1;
swap(m[0], m[1]);
swap(y[0], y[1]);//需要相应年份判断平闰
}
while(m[0] < m[1]){
temp += month[m[0]][leap(y[1])];
m[0]++;
}
day += flag*temp + d[1] - d[0] + 1;
printf("%d\n", day);
}
return 0;
}

codeup之日期差值的更多相关文章

  1. 题目1096:日期差值(a-b=(a-c)-(b-c))

    http://ac.jobdu.com/problem.php?pid=1096 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每 ...

  2. 九度OJ 1096:日期差值 (日期计算)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8138 解决:2752 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据, ...

  3. 九度oj 题目1096:日期差值

    题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行, ...

  4. Android 获取当前日期距离过期时间的日期差值的完整方法直接使用

    /*** * 获取当前日期距离过期时间的日期差值 * @param endTime * @return */public String dateDiff(String endTime) { Strin ...

  5. Hibernate中HQL的日期差值计算,可计算相差多少秒

    最近有个业务需求就是计算订单创建时间离现在超过 4 小时的订单都查找出来! 那么就需要用到日期函数了. 网上找了一下总共的日期函数有一下几个: CURRENT_DATE() 返回数据库当前日期 时间函 ...

  6. MVC 下 ajax调用 日期差值计算

    背景: 服务项目已有服务期起止时间From-To 现在要根据用户输入的新的起始时间, 和该服务期的原有区间值, 计算出新的服务期截止时间 即 NewServiceToDateTime = NewSer ...

  7. 关于Java中计算日期差值不准确问题

    1.字符串日期相减 如:2016-4-1,必须先将此字符串转成Date对象,并且, 格式必须为:yyyy—MM—dd  HH:mm:ss. 如果不转就直接计算(2016-4-1)两个这样的日期,则误差 ...

  8. PHP中比较两个时间的大小与日期的差值

    在这里我们全用到时间戳 mktime(hour,minute,second,month,day,year,[is_dst])     其参数可以从右向左省略,任何省略的参数都会被设置成本地日期和时间的 ...

  9. php 日期 - 计算2个日期的差值

    /** * 日期-计算2个日期的差值 * @return int */ public function get_difference($date, $new_date) { $date = strto ...

  10. javascript 计算两个日期的差值

    代码 Typescript版 /** * TimeSpan just like the class TimpSpan in C# ,represent the time difference * @c ...

随机推荐

  1. HTTP - [01] 简介

    HTTP本身是不安全的,因为传输的数据未经加密,可能会被窃听或篡改.为了解决这个问题,引入了HTTPS,即在HTTP上加入SSL/TLS协议,为数据传输提供了加密和身份验证. 一.概述   HTTP( ...

  2. CentOS7搭建CDH5.15.0集群

    CentOS7搭建CDH5.15.0集群 一.节点说明 节点 Server/Agent Memory master Server & agent 4G node1 agent 2G node2 ...

  3. JDK 24 发布,新特性解读!

    真快啊!Java 24 这两天已经正式发布啦!这是自 Java 21 以来的第三个非长期支持版本,和 Java 22.Java 23一样. 下一个长期支持版是 Java 25,预计今年 9 月份发布. ...

  4. Docker IPv6 网络环境配置

    由于目前Docker 在IPv6网络中运行的相关配置并非默认自动生成的,所以需要大家根据自己的网络环境来具体做一些相应配置,具体如下: 本次操作是在 Ubuntu16/18或者CentOS7 OS上面 ...

  5. 解决Linux下文本文件中文乱码问题

    上一篇我们提到了OS和DB的一些中文乱码问题解决,本篇我们继续介绍下在OS上的文本文件中文乱码问题. 操作系统是Linux(OEL 8.10),所有文件是打了一个压缩包上传的,上传解压后发现其中的文本 ...

  6. Oracle AI应用的LLM模型典型配置

    最近在做一些基于Oracle的一些AI应用测试工作,AI肯定离不开配置LLM相关,虽然是简单配置类,但实际还是遇到一些卡点,记录下来供今后参考. 1.配置Embedding模型 2.特殊语法传参JSO ...

  7. 【JDBC第7章】DAO及相关实现类

    第7章:DAO及相关实现类 DAO:Data Access Object访问数据信息的类和接口,包括了对数据的CRUD(Create.Retrival.Update.Delete),而不包含任何业务相 ...

  8. datasnap的监督功能【2】-管理Session

    1.服务端的Session是有TDSSession定义的.TDSSession提供了许多有用的方法和特性,再开发室取得服务or重要信息. 如Session状态.安排Session独享定时or自动执行工 ...

  9. [T.3] 团队项目:团队基础设施及 DevOps 准备

    项目 内容 这个作业属于哪个课程 首页 - 2025年春季软件工程(罗杰.任健) - 北京航空航天大学 - 班级博客 - 博客园 这个作业的要求在哪里 T.3 团队项目:团队基础设施及 DevOps ...

  10. 学习Linux命令的正确姿势

    大家好,我是良许. 大家应该注意到了,最近我的公众号文章末尾都挂着自己录制的<Linux命令从小白到大神>课程. 这个课程我从开始录制到制作完成,足足花了一个半月.如果加上前期的资料收集与 ...