【模拟】日期差

【题目描述】 给你两个日期,问这两个日期差了多少毫秒。

【输入格式】 两行,每行一个日期,日期格式保证为“YYYY-MM-DD hh:mm:ss ”这种 形式。第二个日期时间一定比第一个日期时间要大两个日期的年份一定都是 21 世纪的年份。

【输出格式】 一行一个整数代表毫秒数。

【样例输入 1】 2000-01-01 00:00:00 2000-01-01 00:00:01

【样例输出 1】 1000

【样例输入 2】 2000-01-01 00:00:00 2000-11-11 00:00:00

【样例输出 2】 27216000000

【样例解释】 从前有座山。

【数据范围与规定】 对于 10%的数据,两个日期相同。 对于 20%的数据,两个日期只有秒数可能不同。 对于 30%的数据,两个日期只有秒数、分钟数可能不同。对于 40%的数据,两个日期的年月日 一定相同。 对于 60%的数据,两个日期的年月一定相同。对于 80%的数据,两个日期的年份一定相同。 对于 100%的数据,两个日期一定都是 21 世纪的某一天,且第二个日期一定大于等于第一个日。

这个题纯模拟,然而我思考了一小时,debug了一小时仍完AC,于是先打算弃坑。等下次有机会再补上。

大概思路就是: 求出第一个日期到XXXX-01-01 00:00:00的时间 记为x1

求出第二个日期到XXXX-01-01 00:00:00的时间 记为x2

求出第一个日期 到 第二个日期的 年份差 转换成秒 记为x3

然后把x3+x2-x1这个值再乘上*1000,就是最后值。

附上自己错误的代码

#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int Nor[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int Yesr[]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int a[7],b[7];
long long miao=0,flag=0,cha=0,sb=0,total=0;
char s;
bool r(int y){
    if(y % 4 == 0 && y % 100 != 0 || y % 400 ==0)
        {
            return true;
        }
        else
        {
           return false;
        }
}
long long yue(int month,int day,int flag){
    int miao=0;
    if(flag==1){
        for(int i=1;i<month;i++){
            miao+=Yesr[i];
        }
        day = day - 1;
        miao= (miao+day)*24*3600;
        return miao;
    }
    else{
        for(int i=1;i<month;i++){
            miao+=Nor[i];
        }
        miao= (miao+day)*24*3600;
        return miao;
    }
}
long long nian(int year1,int year2){
    int cha=0;
    for(int i=year1;i<=year2;i++){
        if( r(i) )  cha+=366;
        else cha+=365;
    }
    cha = cha * 3600;
    return cha;
}
int main(){
    scanf("%d-%d-%d %d:%d:%d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]);
    scanf("%d-%d-%d %d:%d:%d",&b[1],&b[2],&b[3],&b[4],&b[5],&b[6]);
    if( r(a[1]) ) flag=1;
    else flag=0;
    miao=a[6]+a[5]*60+a[4]*3600+yue    (a[2],a[3],flag);
    cha=nian(a[1],b[1]);
    if( r(b[1]) ) flag=0;
    else flag=0;
    sb=b[6]+b[5]*60+b[4]*3600+yue(b[2],b[3],flag)*3600;
    total = (sb + cha - miao)*1000;
    cout<<total<<endl;
    return 0;
}

错误代码

这大概是自己写过最长的模拟题了

时间: 2024-10-13 21:29:29

【模拟】日期差的相关文章

hive计算日期差

首先,hive本身有一个UDF,名字是datediff.我们来看一下这个日期差计算的官方描述,(下面这个是怎么出来的): hive> desc function extended datediff; OK datediff(date1, date2) - Returns the number of days between date1 and date2 date1 and date2 are strings in the format 'yyyy-MM-dd HH:mm:ss' or 'yyy

九度oj 题目1096:日期差值

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <string> 5 #include

计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值.

/// <summary> /// 计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. /// </summary> /// <param name="DateTime1">第一个日期和时间</param> /// <param name="DateTime2">第二个日期和时间</param> /// <returns></returns> private st

九度OJ 1096 日期差值

题目1096:日期差值 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5143 解决:1789 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 #include<stdio.h> #include<string.h> #include<s

日期差值

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 来源: 2009年上海交通大学计算机研究生机试真题 #include <iostream> using namespace std; #define ISYEAR(x) x%100 != 0 && x%4

九度题目1096:日期差值

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 #include<stdio.h> #include<algorithm> #include<iostream> #include<stack> #include<vector&

C# 获取当前月第一天和最后一天 计算两个日期差多少天

获取当前月的第一天和最后一天 DateTime now = DateTime.Now; DateTime firstDay = new DateTime(now.Year, now.Month, 1); DateTime lastDay = firstDay.AddMonths(1).AddDays(-1); 计算两个日期差多少天 DateTime start=firstDay; DateTime end=lastDay; TimeSpan ts=end.Subtract(start); ts.

jstl 计算日期差

<fmt:parseDate var="start_date" value= "${start_date}" pattern= "yyyy-MM-dd" /> <!-- 把日期字符串转成日期类型 --> <fmt:parseDate var="end_date" value= "${end_date}" pattern= "yyyy-MM-dd" />

题目1096:日期差值 Java/C++

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 Java AC 代码: import java.util.Scanner; public class Main { /** * @param args */ public static void main(String[]