首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

面试题:JS 获取某月天数

转载自:linong https://segmentfault.com/a/1190000038295923 获取某个月天数,这个题一般都是在学 switch(){} 一章案例。...我们一直解题方案是根据一个顺口溜:一三五七八十腊,31天永不差,四六九十一,每月30天,惟有二月二十八,闰年要把日加一。...(我搜,具体怎么背我忘了) 这里面还有个闰年计算规则:四年一闰,百年不闰,四百年再闰。可以被4整除,但是不能被100整除,除非可以被400整除。 ? 是不是被上面的魔性概念征服了?...接来下我们来实现一下 面试题:JS 获取某月天数 先上测试用例 function getMonthCountDay(year, month){ // year 为年份,month 为月份 }...方案原理 js 中 Date 在处理时间时候会做进位退位操作。 ? 借助 Date API 处理日期溢出特性(退位方案) 刚才是用进位,然后减去多余

2.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

如何用js获取当前月份天数

在获取每月天数时候,一般都是存储到一个数组中进行获取,但是如果是二月份的话就需要首先判断是否闰年,再确定是28还是29了。...js可以通过Date对象很方便获取到每月天数,在初始化Date对象时,我们可以通过这种方式: var d = new Date(2017,2,0); console.log(d.getDate())...; 以上代码可以在控制台输出2015年2月份天数 Date对象月份从0开始,即0表示1月份,以此类推。...通过这种方式可以得到每个月份天数,也不同区分闰年了,很方便~ 可以写个这样函数,如下: function mGetDate(year, month){ var d = new Date(year...如果要获取当前月份天数: function mGetDate(){ var date = new Date(); var year = date.getFullYear();

12.1K50

答粉丝问|用python计算时间间隔

主要思路为将两个时间区间分为三段,第一段为开始那年剩余天数,第二段为中间整年天数,第三段是最后一年过了天数。分段时要注意是判断各年是平年还是闰年。如为同年按月以同一方法解决。...,这里给出了day1和day2来分别表示平闰年每月之前天数。...,这里主要涉及一个对该年是平年还是闰年判断,这个在后面也会一直用。...根据定义,如果被100整除时,能被400整除就是闰年,不能被400整除就是平年;如果不能被100整除,那能被4整除就是闰年,不然就是平年,然后通过该年总天数减去从上面给出输入月份之前天数和该月天数最后得到...,分别加在runnian和pingnian上,最后把中间每年天数加起来(包括闰年天数,平年天数,开始一年剩余天数,最后一年剩余天数),得到总和zongday。

2.1K10

「优质题解」任意年月日历输出

本题目主要解决如下几个问题: 1、该月1号是星期几; 2、该月份有几天; 3、2月份天数特殊处理; 4、输出格式问题。.../1/1到所要求XXXX年XX月1日天数,为此我们得到 第k天后是星期(k-(7-1))%7,这里1是指星期一所对应序号1,因为我们是从星期一开始计算,而减去(7-1)是为了把初始值变成星期天...,下标0对应月份做特殊处理,遇到闰年再把MonthDay[2]加一即可。...问题3:2月份天数特殊处理 其实也就是判断某年是否为闰年问题,比较简单,代码如下: 问题4:输出格式问题 查看样例输出,可以看出,每一个星期几对应3个空格,即用%3d格式输出。...每次输出星期6之后,就要输出\n,但这里需要注意一个问题,即最后输出“——————————-”前也要输出一个\n,即以下代码输出最后一行: 这会导致该月份最后一天是星期6这种特殊情况,而输出一个\n,

75250

致敬昨晚熬夜改 bug 技术团队!连 OpenAI 也躲不过:为什么几行代码能反复干翻大批软件

据称该 bug 是个闰年问题。闰年是指该年有 366 日,即较平常年份多出一日。闰年是为了弥补因人为历法规定年度天数 365 日和平均回归年大约 365.24219 日差距而设立。...危险性最高两大闰年 bug #1: 在 C / C++ 中添加或减去年份 在使用 Win32 API C/C++ 代码当中,SYSTEMTIME 结构成为常见民用时间表示方式。...仅通过评估年份,是无法确定具体需要添加多少天。毕竟 endDate 有可能只是 2016-01-01,所以尽管 2016 年是闰年,但只需减去 365 天就能得到 2015-01-01。...再次强调,千万不要具体计算需要添加天数来解决问题——那更容易出错,除非你真的很有经验、清醒地知道自己在干什么。 其他常见错误 开发人员曾犯下过很多跟闰年相关错误,例如: 弄错了闰年算法。...闰年绝对不是固定每四年一次,对于不能被 100 整除年份才是每四年一次,能被 400 整除除外。也就是说,1900 年并不是闰年。 为每个月使用天数数组,其中二月只有 28 天。

19310

C++日期类

,你在加减天数时候轻则月份会随之变化,重则年份也会随之变化,我们知道闰年和平年2月不同,每个月和每个月天数也不同,只有年和月是有规律,所以可以写一个获取天数函数,后续就可以用这个来判断你在某年某月加天数之后是否合法...闰年和平年就差了一个二月份,所以可以将这个二月份进行判断。 所以通过数组更方便一些,只要返回对应下标就可以了,下标为0就忽略它。...= 0 && year % 4 == 0) || year % 400 == 0)//如果是闰年二月就返回29天 { return 29; } else { return...{ _day -= GetMonthDay(_year, _month);//不合法就减去当月天数 ++_month;//减去当前月份天数就说明过去一个月了 if (_month...year, _month))//判断天数合法性 { _day -= GetMonthDay(_year, _month);//不合法就减去当月天数 ++_month;//减去当前月份天数就说明过去一个月了

87900

每日一题吼吼吼(打印从1到最大n位数,计算是第几天)

由于数组是从0开始索引,所以我们需要减去1来正确地填充数组。 *returnSize=--i;这行代码首先将 i 值减少1(通过前缀递减操作)。...= 0 || year % 400 == 0) { return 1; //是闰年,返回真 } else { return 0; //不是闰年,返回假...\n", day_of_year_number); } return 0; } 首先用一个函数计算出某天是一年里面的第多少天,但是2月份比较特殊,会依据是否是闰年来出现对应天数...还需要注意一点是:数组是从0开始,但是用户在输入1月份一定会对应到下标为1天数,这就不符合我们预期,所以我们将下标为0数值设为0,这样就既不会对计算天数造成影响,也不会因为输入月份错误导致对应天数错误...再用一个循环,把这个月份之前天数都相加,再加上这个月份天数。就可以得到是第几天。

7010

【OJ】日期差值与日期累加

KY111 日期差值 1.1 题目分析 日期之间比较可能会出现给两个年月日都不相同,这个就不好作差,每个月给天数不同,还有可以是闰年,得先判断一下是不是闰年,这里就写一个判断闰年函数: bool...2月份时候,闰年就返回29,平年就是28。...KY258 日期累加 2.1 题目分析 与日期有关计算就必须得区别闰年与平年2月份,同样先写一个获取每个月对应日期: 如果是闰年那么就返回29。...= 0) || (year % 400 == 0))) { return 29; } return monthDay[month]; } 这里既然已经有给定与已经给日期相差天数...如果这个月对应日期满了,那么就直接让sum减去对应月份天数,再m++,注意顺序: sum -= GetMonthDay(y, m); m++; 但是这里得注意循环条件sum必须大于所对应月份才能进入循环

10010

C++实战——日期类实现

闰年判断条件为:年份能被4整除并且不能被100整除,或者能被400整除。如果是闰年,2月天数为29天,否则使用数组monthDayArray中对应月份值作为天数。 最后,函数返回获取到天数。...总结:这段代码是一个用于获取指定年份和月份天数函数,对闰年进行了处理,并使用数组存储了每个月份天数。...然后,使用一个while循环来判断当前_day是否超过了当前月份天数。如果超过了,就通过减去当前月份天数来计算剩余天数,并将_month加1。...,用于创建一个新Date对象,该对象日期是当前Date对象减去指定天数结果。...通过重载"-"运算符,可以实现给Date对象减去指定天数后返回一个新Date对象操作。

4610

如何计算两个日期之间天数

然后,根据月份和是否为闰年调整这个天数,包括在月份之前所有天数和当前月份中天数(通过day - 1计算,因为天数是从1开始)。...1969/4:每四年有一个闰年闰年有366天。这部分计算从1年到1969年间包含闰年数量,因为每个闰年会多出一天。...- 1969/100:格里高利历规则中,每100年会跳过一个闰年(即那一年不作为闰年),这部分减去这些年份中计算天数。...+ 1969/400:然而,每400年会将本该跳过闰年加回来(即那一年作为闰年),这部分加上这些年份中应该加回天数。...即 (1969*365 + 1969/4 - 1969/100 + 1969/400)这个公式用于计算从公元1年1月1日到给定年份(公元前1年算作年份0,公元1年为年份1,以此类推)累计天数,考虑了闰年影响

12510

类和对象实操之【日期类】

天数不能操作规定天数,也不能 <= 0 注意: 当前包括后续函数都是采取先在头文件 Date.h 类中声明,再到 Date.cpp 实现路径 因历史原因导致闰年变动这里不考虑,该程序实现是理想情况下闰年状态...闰年二月一天,因此需要特殊处理 闰年判断技巧: 四年一闰且百年不闰 或者 四百年一闰 //闰年判断 bool Date::checkLeapYear() const { //按照技巧判断 if (...= 0)) || (_year % 400 == 0)) return true; else return false; } 获取年份天数 闰年一天,为 366 ,非闰年为 365,判断返回即可...366 : 365); } 获取月份天数 根据当前年份和月份,判断当月有多少天 注意: 闰年二月需要特殊处理 //获取月份天数 int Date::getMonthDay() const { //非闰年情况下每个月天数...有了 日期 += 天数 后,可以直接实现 日期 + 天数 同理也可以实现 日期 - 天数 核心思想 注:此时实现是 日期+=天数 进位思想:天数满了后进位到月份上,月份满后进位至年份上 注意: 每个月对应天数都需要计算

12820
领券