Ihre Variable utcdate
ist ein String und hat daher keine getUTCMonth
oder getUTCDate
Methoden.
Weiter unten rufen Sie die getUTCFullYear
Methode für eine Variable, die nicht definiert ist: date
.
Schließlich ist die Art und Weise versuchen, Sie mit Nullen aufzufüllen wird nicht funktionieren, da mm
und dd
sind keine Strings, und so, wenn Sie indizieren sie mit [1]
wird JavaScript, diese Zahlen zu Number
Objekte zwingen, aber sie haben nicht eine 1
Eigenschaft, auch wenn sie zwei Ziffern haben. So bekommst du immer die gepolsterte 0
obendrauf.
Wenn Sie beheben, dass, indem man zuerst die Zahlen in Strings zu zwingen, wäre es immer noch nicht funktionieren, da der &&
Operator false
in einigen Fällen ergeben werden, die als solche ausgegeben werden: false
.
Lange Rede, kurzer Sinn, es gibt einfachere Möglichkeiten, das UTC yyyymmdd-Format eines Datums zu erhalten. Zum Beispiel indem sie sie von der linken Seite des yyyy-mm-ddThh:nn:ss.....
Format, dass toISOString
kehrt Extrahieren:
var d = new Date('2016/10/29 17:00');
console.log(d.toISOString().replace(/-|T.*/g,''));
Beachten Sie, dass die UTC-Datum zu einigen Zeitpunkten ist ein freier Tag im Vergleich zu dem in die lokale Zeitzone. Wenn Sie das verhindern müssen, dann würde ich mit toLocaleDateString
mit einem locale vorschlagen, die ein big-endian date format standard, wie Schweden hat, Litauen, Ungarn, Südkorea, ...:
date.toLocaleDateString('se')
die Trennzeichen entfernen (-
) ist nur eine Frage, die nicht-Ziffern ersetzt:
var d = new Date('2016/10/29 17:00');
console.log(d.toLocaleDateString('se').replace(/\D/g, ''));
Entfernen Sie die 'var utcdate = ...'line und rufe direkt die UTC-Methoden auf' d' an – Andreas
getUTCMonth() ist eine Methode des Date-Prototyps, die versucht, sie in einem String-Objekt (utcdate) zu verwenden. Sie können es (und die anderen Funktionen von Date proptotype) für Ihre d-Variable verwenden. –