首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【LeetCode第 177 场周赛】5169. 日期之间隔几天

【LeetCode第 177 场周赛】5169. 日期之间隔几天

作者头像
韩旭051
发布2020-06-23 11:40:21
8350
发布2020-06-23 11:40:21
举报
文章被收录于专栏:刷题笔记刷题笔记

请你编写一个程序来计算两个日期之间隔了多少天。

日期以字符串形式给出,格式为 YYYY-MM-DD,如示例所示。

示例 1:

输入:date1 = "2019-06-29", date2 = "2019-06-30" 输出:1 示例 2:

输入:date1 = "2020-01-15", date2 = "2019-12-31" 输出:15

提示:

给定的日期是 1971 年到 2100 年之间的有效日期。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/number-of-days-between-two-dates 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

判断两个日期之间相隔天数

转成天,就是 365*年+闰年数+当年的天数

int isleap(int y){
    return y%4==0 && y%100!=0 || y%400==0;
}
int tab[]={-1,31,28,31,30,31,30,31,31,30,31,30,31};
int getdate1(char *date){ 
    int y,m,d,r=0;
    sscanf(date, "%d-%d-%d", &y,&m,&d);
    for(int i=1970; i<y;i++)
        if(isleap(i)) r+= 366;
        else r+= 365;
    for(int i=1;i<m;i++){
        r+=tab[i];
        if(i==2 && isleap(y)) r+=1;
    }
    r+=d;
    return r;
}
#define intfabs(x) ((x)<0?-(x):(x))
int daysBetweenDates(char * date1, char * date2){
    return intfabs(getdate1(date1)-getdate1(date2) );
}

作者:ni-jin-tian-zhen-hao-kan-2
链接:https://leetcode-cn.com/problems/number-of-days-between-two-dates/solution/fen-bie-ji-suan-liang-ri-qi-xiang-dui-yu-1970nian-/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
class Solution {
public:
    int day_diff(int year_start, int month_start, int day_start
			, int year_end, int month_end, int day_end)
{
	int y2, m2, d2;
	int y1, m1, d1;
	
	m1 = (month_start + 9) % 12;
	y1 = year_start - m1/10;
	d1 = 365*y1 + y1/4 - y1/100 + y1/400 + (m1*306 + 5)/10 + (day_start - 1);
 
	m2 = (month_end + 9) % 12;
	y2 = year_end - m2/10;
	d2 = 365*y2 + y2/4 - y2/100 + y2/400 + (m2*306 + 5)/10 + (day_end - 1);
	
	return (d2 - d1);
}

    int daysBetweenDates(string date1, string date2) {
        int y1,y2,m1,m2,d1,d2;
        y1=stoi(date1.substr(0,4));
        y2=stoi(date2.substr(0,4));
        m1=stoi(date1.substr(5,2));
        m2=stoi(date2.substr(5,2));
        d1=stoi(date1.substr(8,2));
        d2=stoi(date2.substr(8,2));
        return abs(day_diff(y1,m1,d1,y2,m2,d2));
    }   
};

这道题梳理清楚之后无所谓啦。

主要是第二种这个比较巧妙。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 判断两个日期之间相隔天数
  • 这道题梳理清楚之后无所谓啦。
  • 主要是第二种这个比较巧妙。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档