Ваша переменная utcdate
является строкой, и поэтому она не имеет getUTCMonth
или getUTCDate
методов.
Далее вы вызываете метод getUTCFullYear
для переменной, которая не определена: date
.
Наконец, как вы пытаетесь раздуть с нулями не будет работать, так как mm
и dd
не являются строками, и поэтому, когда вы индексировать их с [1]
, JavaScript будет принуждать эти числа Number
объектов, но они не имеют a 1
, даже если у них две цифры. Таким образом, вы всегда получите набивку 0
.
Если бы исправить это первым принуждая эти числа в строки, он все равно не будет работать, так как оператор &&
даст false
в некоторых случаях, которые будут выводиться как таковые: false
.
Короче говоря, есть более простые способы получить формат UTC yyyymmdd даты. Например, извлекая его из левой части формата yyyy-mm-ddThh:nn:ss.....
что toISOString
возвращается:
var d = new Date('2016/10/29 17:00');
console.log(d.toISOString().replace(/-|T.*/g,''));
Имейте в виду, что дата UTC находится в некоторые моменты времени один выходной день по сравнению с датой в местный часовой пояс. Если вам нужно, чтобы предотвратить это, то я бы предложил использовать toLocaleDateString
с локалью, которая имеет big-endian date format standard, такие как Швеция, Литва, Венгрия, Южная Корея, ...:
date.toLocaleDateString('se')
Чтобы удалить разделители (-
) это просто вопрос о замене нецифровые:
var d = new Date('2016/10/29 17:00');
console.log(d.toLocaleDateString('se').replace(/\D/g, ''));
Удалить 'вар utcdate = ...'и вызовите UTC-методы на' d' напрямую – Andreas
getUTCMonth() - это метод прототипа Date, ваш код пытается использовать его для строкового объекта (utcdate). Вы можете использовать его (и другие функции прогнозирования даты) для переменной d. –