我当前的日期格式为30-Dec-2018
。我想在此日期格式中添加2个月(可能会更改),所以我的输出将是2019年2月28日。我很少尝试this,但没有成功。
我认为我的日期格式导致生成正确输出时出现问题。使用javascript在上述日期格式中添加月份的任何帮助。谢谢
P.S:添加日期也可能会更改年份
编辑:
var date= new Date(30-Dec-2018);
var month_add = date.setMonth(date.getMonth()+2);
alert(month_add);
我在警报框中得到的输出是:1553022000000
答案 0 :(得分:0)
您可以将该日期字符串解析为year
,month_index
和day
组件,以便可以将Date constructor与它们一起使用,并使用Date方法添加两个月,然后将其重新格式化为字符串:
const input = '30-Dec-2018';
console.log( add_two_months( input ) );
function add_two_months ( input ) {
const date = parse_date_string( input );
date.setMonth( date.getMonth( ) + 2 );
return format_date( date );
}
// Expects input in form '30-Dec-2018'
function parse_date_string ( str ) {
const [ , day, month_str, year ] = input.match( /(\d*)-(\w*)-(\d*)/ );
const month_index = {
jan: 0,
feb: 1,
mar: 2,
apr: 3,
may: 4,
jun: 5,
jul: 6,
aug: 7,
sep: 8,
oct: 9,
nov: 10,
dec: 11,
}[ month_str.toLowerCase( ) ];
return new Date( year, month_index, day );
}
function format_date ( date ) {
const day = date.getDate( ).toString( ).padStart( 2, '0' );
const month = [
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
][ date.getMonth( ) ];
const year = date.getFullYear( );
return `${day}-${month}-${year}`;
}
如果您使用ISO 8601日期/时间格式,出于多种原因,我强烈建议您使用该格式,那么可以将所有格式简化为:
const input = '2018-12-30';
console.log( add_two_months( input ) );
function add_two_months ( input ) {
const date = new Date( input );
date.setMonth( date.getMonth( ) + 2 );
return date.toISOString( ).substr( 0, 10 );
}