js 当前日期增加自然月

js 在日期不满足的情况下就会自动加1个月,比如在当前时间为3月31号,传入1,1两个参数,预期结果为2月29日,但是结果输出了3月2日。就是如果不满就会溢出到下个月,后来看了api发现了setMonth有两个方法,另外一个是指定月份,指定某一天,就可以解决这个问题

我们先看看按天数去计算的代码,很简单

var d = new Date();d.setMonth(d.getMonth() +1);alert(d.toLocaleString());

但是我们要求的是自然月,所以需要判断 是否2月 且是否是闰年 ,我们还需要另外一个方法去格式化时间 ,代码如下

//求自然月日期function getMonthBeforeFormatAndDay(num, format, day) {var date = new Date();date.setMonth(date.getMonth() + (num*1), 1);//读取日期自动会减一,所以要加一var mo = date.getMonth() + 1;//小月if (mo == 4 || mo == 6 || mo == 9 || mo == 11) {if (day > 30) {day = 30}}//2月else if (mo == 2) {if (isLeapYear(date.getFullYear())) {if (day > 29) {day = 29} else {day = 28}}if (day > 28) {day = 28}}//大月else {if (day > 31) {day = 31}}retureValue = date.format('yyyy' + format + 'MM' + format + day);return retureValue;}//JS判断闰年代码function isLeapYear(Year) {if (((Year % 4) == 0) && ((Year % 100) != 0) || ((Year % 400) == 0)) {return (true);} else { return (false); }}//日期格式化Date.prototype.format = function (format) {var o = {"M+": this.getMonth() + 1, // month"d+": this.getDate(), // day"h+": this.getHours(), // hour"m+": this.getMinutes(), // minute"s+": this.getSeconds(), // second"q+": Math.floor((this.getMonth() + 3) / 3), // quarter"S": this.getMilliseconds()// millisecond
            }if (/(y+)/.test(format))format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));for (var k in o)if (new RegExp("(" + k + ")").test(format))format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));return format;}

这样就大功告成啦,网上好像没有这方面的代码,希望能帮到需要求自然月的同学

 

转载于:https://www.cnblogs.com/linyijia/p/6118835.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

好雨云帮如何对接Git Server

前言 云帮目前支持对接GitLab、Gogs、Github,或者主流代码托管平台的公开项目,后期会考虑接入其他类型的Git服务。 私有云 GitLab是一个用于仓库管理系统的开源项目,私有云服务里使用比较多的自建Git服务。 对接GitLab 通过应用市场进行安装Gitlab 安装G…

Python 生成requirement 使用requirements.txt

python项目中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号。以便新环境部署。requirements.txt可以通过pip命令自动生成和安装生成requirements.txt文件 pip freeze > requirements.txt安装requirements.txt依赖 pip install -r requ…

Source Insight上手教程

目录Project的建立和工作区域同步查看定义查找引用查找调用Source Insight常用快捷键 目录 最近刚参加工作,第一个任务就是查看项目的源码,熟悉代码结构。于是乎就简单学习了Source Insight。在这里就转载别人的文章当做自己的笔记,便于自己…

微信禁用右上角的分享按钮,WeixinJSBridge API以及隐藏分享的子按钮等菜单项

今天在做隐藏微信右上角的分享按钮 百度查到的一串代码&#xff0c;挺好用的 <!--禁用微信分享按钮--><script>function onBridgeReady() {WeixinJSBridge.call(hideOptionMenu);}if (typeof WeixinJSBridge "undefined") {if (document.addEventListen…

python2.7无法使用pip(安装easy_install)

python27和python36 共存时安装pip方法&#xff0c;解决python27文件夹下没有script文件方法 报错&#xff1a; D:\PYTHON2.7>python ez_setup.py Downloading http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg Traceback (most recent call…

Codeforces 754E:Dasha and cyclic table

Codeforces 754E&#xff1a;Dasha and cyclic table 题目链接&#xff1a;http://codeforces.com/problemset/problem/754/E 题目大意&#xff1a;$A$矩阵&#xff08;$size(A)n \times m$&#xff0c;仅含a-z&#xff09;在整个平面做周期延拓&#xff0c;问$B$矩阵&#xff…

位运算中的左移和右移的计算详解

最近在学习javaScrapt&#xff0c;在学到位运算符这部分的时候&#xff0c;突然发现看不懂书上的例子了。经过查找资料后&#xff0c;发现了一遍不错的文章。分享一下&#xff1a; 正数的左移和右移 以3为例 3的二进制为 00000011 右移2位的时候将最右的11去掉左边补00结果…

AC日记——字符串P型编码 openjudge 1.7 31

31:字符串p型编码 总时间限制: 1000ms内存限制: 65536kB描述给定一个完全由数字字符&#xff08;0,1,2,…,9&#xff09;构成的字符串str&#xff0c;请写出str的p型编码串。例如&#xff1a;字符串122344111可被描述为"1个1、2个2、1个3、2个4、3个1"&#xff0c;因…

javascript中的define用法

文章目录1. AMD的由来2. AMD是什么3. AMD实例&#xff1a;如何定义一个模块4. 匿名模块5. 仅有一个参数的define6. Dojo中的AMD7. 结论最近由于工作需求只能快速学习JS&#xff0c;但在看代码的时候发现许多东西都有疑问比如说代码刚开始的define关键字的用法&#xff0c;刚好最…

解决:pip警告!DEPRECATION: The default format will switch to columns in the future.

pip警告&#xff01; DEPRECATION: The default format will switch to columns in the future. You can use --format(legacy|columns) (or define a format(legacy|columns) in your pip.conf under the [list] section) to disable this warning. pip升级到9.0.1后 查看pi…

PLSQL安装配置

&#xff08;1&#xff09;解压&#xff1a;plsql developer Oracle数据库开发工具首先确保有oracle数据库或者有oracle服务器&#xff0c;然后才能使用PLSQL Developer连接数据库。&#xff08;2&#xff09;工具---首选项---连接----输入OCI库&#xff08;设置之后不用再装or…

Mysql 学习笔记2

&#xff08;1&#xff09;MySQL查看表占用空间大小 //先进去MySQL自带管理库&#xff1a;information_schema //自己的数据库&#xff1a;dbwww58com_kuchecarlib //自己的表&#xff1a;t_carmodelparamvalue mysql> use information_schema; Database changed mysql&g…

python程序打包为exe可执行文件

大家都知道&#xff0c;Python是一种脚本语言&#xff0c;也就是解释型的语言&#xff0c;需要解释器来进行解释以后才可以执行&#xff0c;而Python源代码需要在Python虚拟机上面运行&#xff0c;但是我们做好的程序&#xff0c;不可能给用户使用的时候还让他安装一个Python环…

Backbone简介

1. 前言 本文的目的&#xff0c;是帮助大家快速理解掌握Backbone的使用&#xff0c;但它并不是API&#xff0c;因此我不会将每一个方法都详细地描述&#xff0c;但是我会告诉你如何学习它们。 这是一篇稍稍较长的技术文章&#xff0c;因为我想将我所了解的东西尽可能详细地分享…

使用Android Studio搭建Android集成开发环境

一、Android Studio简单介绍 2013年GoogleI/O大会首次发布了Android Studio IDE&#xff08;Android平台集成开发环境&#xff09;。它基于Intellij IDEA开发环境&#xff0c;旨在取代Eclipse和ADT&#xff08;Android开发者工具&#xff09;为开发者提供更好的开发工具。既然G…

[Oracle]UNIX与Windows 2000上Oracle的差异(I)

作者&#xff1a;Ian Adam & David Stien, SAIC Ltd 日期&#xff1a;19-Dec-2003 出处&#xff1a;http://www.dbanotes.net翻译&#xff1a;Fenng -----------------------------------------------------------------------------------------------------------------…

django2.x报错No module named 'django.core.urlresolvers'

解决方法就是: from django.urls import reverse 最近从django1.9迁移到django2.0中出现一个意外的报错&#xff1a; 这个报错的原因在stack overflow上有很直接的解释&#xff0c;但是百度上并没有直接的答案。 简单来说&#xff0c;原因就是&#xff1a;django2.0 把原来…

Underscore简介

5. Underscore.js Underscore封装了常用的JavaScript对象操作方法&#xff0c;用于提高开发效率。它本身与我们介绍的主题“Backbone”没有半毛钱的关系&#xff0c;因此你可以完全不理会“Backbone”的概念来学习它&#xff0c;或将它单独运用到任何一个页面。&#xff08;另外…

POJ2190 HDU2714 ISBN

USACO 2003 Fall Orange 问题链接&#xff1a;POJ2190 HDU2714 ISBN。 问题简述&#xff1a;参见上述链接。 问题分析&#xff1a; 单纯的计算问题。需要注意以下几点&#xff1a; 1.如果是末尾数&#xff0c;则输出为‘X’&#xff1b; 2.如果能找到对应的值则输出&#xff1b…

Django-安装xadmin的方法及主要配置方法

历经千辛万苦&#xff0c;终于实现了django2.1中xadmin的使用 被论坛里各路神仙带跑N次 准确说是几个小时 直接colne https://github.com/Liu0330/xadmin 工作系统环境&#xff1a;win10Python3.6.xDjango2.1.xXadmin2.0&#xff08;注意2.2版本就不行&#xff01;&#xff…