首页
学习
活动
专区
圈层
工具
发布

关于Date对象那些事

我们可以考虑把它封装成一个函数,带入参数n,来得到任意指定天数的前/后日期: /** * 获取当前时间前/后的某一天日期 * @param {number} n n天前(负数)/后(正数) *...此处可以用一个讨巧的方法: 先用 setDate(0) - 设置上个月最后一天,让月份变成上个月。 紧接着再 setDate(15) - 设置15号。...()方法中,写入参数大于月份最大天数,会自动顺移到下个月的日期。...比如当前月份是1月,调用setDate(33),就会得到 2月2号 。...上面的方法我们同样也可以封装如下: /** * 设置上个月的日期 * @param {number} n 日期号 * (n 的范围最好在所属月份的最大天数内,范围外不报错,会根据月份顺移日期)

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS 在获取当前月的最后一天遇到的坑

    为了更好的讲这节的内容,提示一个 JS 处理日期的小技巧,想获取上个月最后一天,只需要设置SetDate参数为0即可。...var endDate = new Date(); //上个月最后一天 endDate.setDate(0); 接着正文开始: 使用 JS 获取当前月的最后一天,咱们通常的思路先获取下个月的第一天,然后在减去一天....... 28 29 30 31 2月 1 ....... 28 3月 1 ....... 28 29 30 31 咱们通过 month + 1,在 JS 中会理解成: 当前日期 + 当月的天数...所以不要认为 month + 1 就是月份加 1,它的意思是当前日期加上当月天数 。 那要怎么保证多了不会多跳一个月呢? 只要保证 month + 1 之前不会超过28号就行啦,那要怎么做到呢?...(28) 完整代码: var date= new Date(2019, 0, 31); //0 表示1月 date.setDate(28) date.setMonth(date.getMonth() +

    4.4K30

    几个JavaScript极短日期时间代码片段(你值得拥有)

    所以我们的常规代码片段如下: function isYesterday(dt = new Date()) { let curDate = new Date() // 当前日期 curDate.setDate...dt.replace(/-/g,'/'):dt)[i]()) 复制代码 4.月天数 关于月天数需求,我们大致有: 获取当前日期所属月份天数,简称获取当月天数 获取当前日期所在年中的任一月份天数,简称获取今年任一月天数...获取给定日期所属月份天数,简称获取指定日期的所属月天数 获取给定日期所在年中任一月天数,简称获取指定日期的所属年任一月天数 获取年任一月天数 我们方法需要两个参数来完成这个功能函数,所以我们的常规代码片段是...:23:59)所属月天数 -- 获取指定日期的所属月天数 daysInMonth('2000-01-01 12:23:59') 复制代码 setDate(0)那么日期就会被设置为上个月的最后一天,...具体更多可以看 MDN Date.prototype.setDate[1]的描述 月天数如何个极短法呢,可读性可能要牺牲点了,不过也还好,借助new Date(year,month,0).getDate

    1.5K20

    Date(类与对象)

    要求第一个日期的年月日初始化采用构造函数,第二个日期的年月日初始化采用setDate方法,第三个日期又采用构造函数,第四个日期又采用setDate方法,以此类推。...没有看之前是怎么打的,过了几个月也忘记了,这次想到的就是先把闰年和平年的月份打出来,后期做判断的时候就非常简便:先判断跨年的,这个闰年和平年都一样,没有必要做区分,然后判断跨月的,因为在这里闰年和平年2月的天数不一样...public: Date(); Date(int y,int m,int d); int getYear(); int getMonth(); int getDay(); void setDate...getYear(){return year;} int Date::getMonth(){return month;} int Date::getDay(){return day;} void Date::setDate...=0){ Date test(year,month,day); test.print(); }else{ Date test; test.setDate(year,month

    40430

    JavaScript原生实战手册 · 日期处理完全指南:不再依赖Moment.js

    ); startOfDay.setHours(0, 0, 0, 0); // 需要记住参数顺序 痛点四:不可变性问题 // 原生Date对象是可变的,容易造成意外修改 const originalDate...console.log(originalDate); // 意外被修改了 我们的日期处理神器 现在让我们来打造一个真正好用的日期处理工具: class DateHelper { constructor...if (diffDays < 7) return`${diffDays}天前`; // 超过一周显示具体日期 return this.format(); } // 添加天数...完全基于原生JavaScript API ✅ 体积小:压缩后不到5KB,比Moment.js小95% ✅ 性能优秀:格式化速度比Moment.js快50%以上 ✅ 不可变性:所有操作都返回新实例,避免意外修改...✅ 链式调用:优雅的API设计,使用体验良好 功能完备: ✅ 灵活的日期格式化(基于Intl.DateTimeFormat) ✅ 智能的相对时间显示 ✅ 便捷的日期计算(加减天数、月份、年份) ✅ 实用的日期判断

    21810

    简述ERP提前期的运算逻辑

    在计算时,我们需要了解在装配件工艺路线中,每道工序的都存在提前期百分比和偏置天数:   (1)提前期百分比决定每道工序在装配件的提前期所占有的时间比率,是计算累计、总提前期时所使用,并且在运行计划时,系统以此计算组件的需求制造...、偏置天数、提前期百分比   (5)因为组件A的累计制造提前期为10天,也就是在加工物料X前,必须提前10天将A完工入库以供X的需求。   ...所以物料X的累计制造提前期的计算,需要使用累计制造提前期-偏置天数。   (6)组件A,B,C,D的加工过程是可以同时进行的,所以在计算累计制造提前期时,将取该类组件中最大的提前天数。...最终得到X的累计制造提前期,即X的累计制造提前期= X的制造提前期+ MAX [组件A,B,C或D(累计制造提前期-偏置天数)] = 10+16 = 26。   ...在计算完装配件的累计制造提前期后,在将采购所需的提前期与其进行累计。从而产生整个装配件的累计总提前期,即:累计总提前期=物料的总提前期+MAX [各组件(累计总提前期-偏置天数)]。

    2.4K40

    Python|动态规划反推解决最低票价

    正序逆序的区别主要是一个向前累计,一个向后累计,最后得到两边的数就是需要的结果。...此时票价累计便为当前最后一天的票的价格。然后将这种累计存入一个含有要旅行的最后一天天数个元素的列表中,并将其位置与天数位置对应。如果前一天不旅行,这种累计就在列表中向前提一位。...就这样反向遍历,直到遇到下一次要旅行的天数,仍然有三种购票情况: 1.只买一天,后边不管,票价为cost[1] 2.买七天,管后边的七天,后边7天累计置为0 3.买三十天,管后边的30天,后边30天累计置为...0 然后根据本次购票与对应情况所产生的累计进行相加,得到本次买票后产生的三种累计情况,用min()函数择其最小,就是当前天数的累计。...直到循环到第一个要旅行的天数。产生的累计就是我们需要求得答案,也就是最低票价。

    75730
    领券