getMonth выбрасывает неправильный месяц (81) - Angular 6 - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь получить месяц даты, но он постоянно показывает мне следующее: "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 голосов
/ 25 сентября 2018

сегодня я использую 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
0 голосов
/ 25 сентября 2018

просто измените ниже код

var year = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate();
0 голосов
/ 25 сентября 2018

Это на самом деле из-за + 1

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

Он получает date.getMonth, который равен 8, но так как вы делаете +1, а переменная обрабатывается как строка, вместо добавленияодин, он добавляет число 1 в конце, что делает его 81

Если по какой-либо причине вам нужно +1, вы должны объявить его перед раздачей как

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

или сделать какдругие ответы тоже правильно сделали

var year = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate();
0 голосов
/ 25 сентября 2018

Попробуйте это.

var year = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate();
0 голосов
/ 25 сентября 2018

Я бы порекомендовал вам использовать популярную библиотеку для обработки / обработки даты и времени. https://momentjs.com/

var d = moment(scope.date);
d.month(); // 1
d.format('ddd MMM DD YYYY'); // 'Mon Feb 01 2016
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...