首页
学习
活动
专区
工具
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.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何用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.5K50

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

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

    2.2K10

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

    本题目主要解决如下几个问题: 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,

    82050

    【C++项目实战】类和对象入门实践:日期类实现万字详解

    这些属性将用于表示日期的状态。 接下来,我们将为日期类定义一系列方法。这些方法将实现日期的各种操作,如设置日期、获取日期、计算两个日期之间的天数差、判断一个日期是否是闰年等。...,每个月的天数都不一样,并且还存在闰年的2月份有29,逻辑复杂必须封装成函数实现 将每个月的天数写在数组里,并空出第一个位置来,这样数组下标就能与月份一一对应 获取月份的天数之后,再判断是否是2月以及是否是闰年再做进一步处理...调整日期:如果天数超出,则减去当前月份的天数,并将月份_month加1。如果月份超过12(即一年结束),则将年份_year加1,并将月份重置为1。...+可以直接复用+=的代码 -=实现思路: 减少天数:将传入的天数day从当前日期的天数_day中减去。...但相对来说逻辑是比较简单的,直接计算的方法都比较复杂,涉及到不同的月份天数和闰年,因为天数的计算相对来说数据是比较小的,这些计算量在CPU面前还是小意思的 日期+日期没有实际意义,所有这里不进行运算符重载

    4000

    致敬昨晚熬夜改 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 天。

    25210

    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;//减去当前月份天数就说明过去一个月了

    94000

    每日一题吼吼吼(打印从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,这样就既不会对计算的天数造成影响,也不会因为输入月份的错误导致对应的天数错误...再用一个循环,把这个月份之前的天数都相加,再加上这个月份的天数。就可以得到是第几天。

    9210

    蓝桥杯:日期问题(我的绝望题)

    前言: 这是学校组织比赛时的一道模拟题,写完这道题我才发现我是真正的菜鸟,希望通过这道题来对自己进行一个反省。 我是菜鸟,所以我多练!...但是每个月的天数就要根据具体的月份来定,所以我们定义非闰年时的每个月的天数。 如果天数满足day0就是满足的....//定义非闰年情况的每个月的天数 int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; ⛳️4.设计符合题意的日期,也就是该函数用来判断一个日期是否存在...❗️但是有一个点,就是,我们前面弄的是非闰年的每个月天数,如果我们判断该年是闰年,那么我们就去把days【2】+1,在函数末尾再变为非闰年的每个月天数。...//只要去判断月份,每个月的天数就可以 if (is_leap_year(month)) days[2]++; //如果是闰年,就把天数变为29天 if

    10410

    【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必须大于所对应的月份才能进入循环

    13410

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

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

    11510

    Java一分钟之-Java日期与时间API:LocalDate, LocalDateTime

    parsedDateTime = LocalDateTime.parse(dateTimeString, DateTimeFormatter.ISO_LOCAL_DATE_TIME); 2.2 操作日期与时间 添加/减去天数...DateTimeFormatter.ofPattern("dd-MM-yyyy"); LocalDate correctDate = LocalDate.parse("15-03-2022", formatter); 3.2 日期时间操作的闰年问题...在涉及到月份加减时,要考虑闰年的影响。...结语 Java 8的日期和时间API简化了日期和时间的处理,但同时也需要我们注意一些细节,如日期格式、闰年问题和时区处理。...通过合理使用LocalDate和LocalDateTime,可以编写出更稳定、更易读的代码。在实际开发中,结合具体需求和场景,选择合适的日期时间类,将使你的代码更加准确和高效。

    26910

    【C语言刷题每日一题#牛客网HJ73】——计算日期到天数转换(给定日期,计算是该年的第几天)

    此问题解决方法不唯一,这里介绍的是一种使用数组和循环实现的简单办法 问题描述 思路分析 问题的要求是输入一个日期,计算这是当年的第几天——要解决这个问题,逻辑就是将输入日期当月之前整月的天数加起来,再加上当月的天数...之所以要在第一个元素放数组0,是因为这样可以使数组每个元素的下标对应月份 不过,需要注意的一个点是——考虑到年份的不同,闰年的2月比正常情况下要多一天 所以额外进行一个判断,如果年份是闰年,数组下标为...2的元素值加一 关于闰年的判断有一个小口诀——四年一闰,百年不闰,四百年再闰 if (((year % 4 == 0) && (year % 100 !...然后用一个循环将输入的月份之前的整月天数加起来 在循环结束之后,将循环内得到的计算结果再加上当月的天数就是某年某月某日所处在当年的天数啦 int days = 0; for (int i = 0; i...= 0)) || (year % 400 == 0)) { arr[2] += 1; //如果该年是闰年,2月天数+1 } //以下是计算部分 int

    8210

    【算法】日期问题(CC++)

    这种问题看上去很简单,但是属于大模拟问题,写的代码比较长,因为我们既要根据月份不同给增加的天数不同,2月份天数还要根据闰年定。下面我们以acwing上的一道题为例子进行讲解回文日期问题。...我们一般会根据天数设置一个月份的天数的数组(2月份28天),那么涉及到2月份就要判断闰年,我们再写一个函数去判断闰年。我们根据输入的日期每一次去递增1去寻找回文日期。...当两个符合条件的日期循环才可以停,当递增1时,可能引起天数、月份的进位,那么我们要去写一个获取天数的函数,当天数大于此月份的天数,那么月份+1,月份越界了,年份+1。...month,int day){//1~year年month月day日共多少天 int ans=0; for(int i=1;i<year;i++){ ans+=365+is_leap(i);//闰年多一天...本篇博客中涉及到的日期问题只解释了四个,还有很多日期问题没有写,希望大家在以后刷题中自己总结,这里不再过多解释。 执笔至此,感触彼多,全文将至,落笔为终,感谢大家的支持。

    21510
    领券