JavaScript实现月份累加,比如‘2021-01-31‘加一个月得到‘2021-02-28‘

Posted web半晨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript实现月份累加,比如‘2021-01-31‘加一个月得到‘2021-02-28‘相关的知识,希望对你有一定的参考价值。


1、主要代码

function addMonth(initialDate, months) 
	let date = new Date(initialDate),
		oldDate = date.getDate();
	date.setDate(1);
	date.setMonth(date.getMonth() + months);
	let newDay = new Date(date.getYear(), date.getMonth() + 1, 0).getDate();
	date.setDate(Math.min(oldDate, newDay));
	return date;

返回的是标准时间Wed Feb 17 2021 00:00:00 GMT+0800 (GMT+08:00),所以需要格式化处理。


2、时间格式化

function addMonth(initialDate, months) 
	let date = new Date(initialDate),
		oldDate = date.getDate();
	date.setDate(1);
	date.setMonth(date.getMonth() + months);
	let newDay = new Date(date.getYear(), date.getMonth() + 1, 0).getDate();
	date.setDate(Math.min(oldDate, newDay));
	console.log(date);
	// Wed Feb 17 2021 00:00:00 GMT+0800 (GMT+08:00)
	return parseTime(date, 'y-m-d');


function parseTime(time, pattern) 
	if (arguments.length === 0 || !time) 
		return null;
	
	const format = pattern || 'y-m-d h:i:s';
	let date;
	if (typeof time === 'object') 
		date = time;
	 else 
		if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) 
			time = parseInt(time);
		 else if (typeof time === 'string') 
			time = time.replace(new RegExp(/-/gm), '/');
		
		if ((typeof time === 'number') && (time.toString().length === 10)) 
			time = time * 1000;
		
		date = new Date(time);
	
	const formatObj = 
		y: date.getFullYear(),
		m: date.getMonth() + 1,
		d: date.getDate(),
		h: date.getHours(),
		i: date.getMinutes(),
		s: date.getSeconds(),
		a: date.getDay()
	;
	const time_str = format.replace(/(y|m|d|h|i|s|a)+/g, (result, key) => 
		let value = formatObj[key];
		if (key === 'a') 
			return ['日', '一', '二', '三', '四', '五', '六'][value];
		
		if (result.length > 0 && value < 10) 
			value = '0' + value;
		
			return value || 0;
	);
	return time_str;


console.log(addMonth('2021-1-17', 1));
// 2021-02-17

3、效果演示

小程序码


普通二维码

以上是关于JavaScript实现月份累加,比如‘2021-01-31‘加一个月得到‘2021-02-28‘的主要内容,如果未能解决你的问题,请参考以下文章

C++实现日期累加

C++实现日期累加

javascript innerHTML累加值问题~~求解

javascript reduce方法用的多么

一JavaScript获取当前月份的前12个月,获取最近的12个月二js实现获取当前月份前的12个月份,格式化后放在一个数组里

java用多线程实现累加求和