javascript将月份数添加到特定日期格式

时间:2019-02-19 20:04:34

标签: javascript date

我当前的日期格式为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

1 个答案:

答案 0 :(得分:0)

您可以将该日期字符串解析为yearmonth_indexday组件,以便可以将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 );
}