getMonth抛出错误的月份(81)-Angular 6

时间:2018-09-25 12:55:13

标签: javascript angular

我正在尝试获取日期的月份,但它一直向我显示:"2018-81-26 07:00" ..这是我用来设置所需日期的函数:

selectStartTime(time) {
      this.selectedTime = '' + time.time + ' ' + time.period;

      var date = new Date(this.start_at); // this shows good date: 
      //Wed Sep 26 2018 00:00:00 GMT+0200 (Central European Summer Time)

      var period = time.period;
      var hours = '';

// error occurs here:
      var year = date.getFullYear() + '-' + date.getMonth()+1 + '-' + date.getDate();
// year: 2018-81-26 07:00



      if (period === 'PM') {
          hours = '' + (time.value + 12) + ':00';
          this.campaignModel.starts_at = year + ' ' + hours;
      } else {
          hours = time.time;
          this.campaignModel.starts_at = year + ' ' + hours;
      }
    }

我在做什么错了?

5 个答案:

答案 0 :(得分:4)

只需在代码下方更改

var year = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate();

答案 1 :(得分:3)

实际上是因为+1

var year = date.getFullYear() + '-' + date.getMonth()+1 + '-' + date.getDate();

它将获得等于8的date.getMonth,但是由于您正在执行+1,并且var被视为字符串,因此与其添加一个数字,而不是在其末尾添加数字1,从而使其成为81 < / p>

如果出于任何原因您需要+1,则应先手动声明

var month = year.getMonth() + 1;
var year = date.getFullYear() + '-' + month+ '-' + date.getDate();

或者像其他答案一样正确执行

var year = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate();

答案 2 :(得分:2)

尝试一下。

var year = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate();

答案 3 :(得分:-2)

我建议您使用流行的库来处理/处理日期和时间 https://momentjs.com/

var d = moment(scope.date);
d.month(); // 1
d.format('ddd MMM DD YYYY'); // 'Mon Feb 01 2016

答案 4 :(得分:-2)

今天,我在很多方面都使用Momentjs更好

https://momentjs.com/

您可以设置日期格式并检索日期的任何部分

moment().format('MMMM Do YYYY, h:mm:ss a'); // September 25th 2018, 10:02:25 am
moment().format('dddd');                    // Tuesday
moment().format("MMM Do YY");               // Sep 25th 18
moment().format('YYYY [escaped] YYYY');     // 2018 escaped 2018
moment().format();                          // 2018-09-25T10:02:48-03:00