2017-10-16 3 views
-1

Ich aktualisiere ein altes System, das moments.js für Daten verwendet.Moment.JS Ablehnungswarnung

Derzeit verwendet es diesen Code als ein Mittel zum Formatieren;

var localTime = moment.utc(this.created_at).toDate(); 
localTime = moment(localTime).calendar(); 

Ich habe versucht, das Datum zu konvertieren toISOString zu verwenden, bevor es zum endgültigen localTime vorbei. Ich bekomme jedoch immer die gleiche Warnung.


Warnung

Deprecation warning: moment construction falls back to js Date. 

Im Folgenden finden Sie das Datumsformat von Twitter in einer XML-Datei erzeugt.

<created_at>Mon Oct 16 10:31:26 +0000 2017</created_at> 

Hier versuche ich es in ein ISO zu konvertieren.

var isoString = moment.utc(this.created_at).toISOString(); 
localTime = moment(isoString, 'YYYY-MM-DDTHH:mm:ss.sss'); 

Die Zeit, die

2017-10-16T10:31:26.000Z 

protokolliert Wenn ich die minimierte moment.js aktualisieren Bibliothek Lokale erhalte ich eine ähnliche Warnung.

moment-with-locales.min.js:1 Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info. 

Warum ist das Datum, an Date() zurückzufallen, obwohl, wenn ich es an der Konsole anmelden ich das ISO-Format zu bekommen. Wo gehe ich falsch?

Antwort

3

Da Ihre Eingabe nicht im ISO 8601-Format vorliegt, weder im RFC 2822-Format noch in moment(String, String).

hier ein funktionstüchtiges Beispiel:

var created_at = 'Mon Oct 16 10:31:26 +0000 2017'; 
 
var localTime = moment.utc(created_at, 'ddd MMM DD HH:mm:ss ZZ YYYY'); 
 
localTime = localTime.calendar(); 
 
console.log(localTime);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

+0

Perfect! So einfach, faltete es sich für mich. Werde mich bestimmt beim nächsten Mal erinnern! Danke! –

0

var localTime = moment.utc(new Date(this.created_at)).toDate(); Versuchen Sie, wo this.created_at ist Mon Oct 16 10:31:26 +0000 2017

+2

Das macht genau das, was moment.js versucht zu sagen "Tu das nicht". – RobG

+0

vereinbart. moment.js rät von der Verwendung der Datumsfunktion von Javascript ab. Dies ist nur ein Hack um das Parsen des Textes – omarwaleed