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‘的主要内容,如果未能解决你的问题,请参考以下文章
一JavaScript获取当前月份的前12个月,获取最近的12个月二js实现获取当前月份前的12个月份,格式化后放在一个数组里