Warning: Date.prototype.toLocaleFormat is deprecated

Fehlermeldung

Warning: Date.prototype.toLocaleFormat is deprecated; consider using Intl.DateTimeFormat instead

Fehlertyp

Warnung. JavaScript stoppt die ausführung nicht an.

Was ist falsch gelaufen?

Die nicht standardisierte Methode Date.prototype.toLocaleFormat ist veraltet und sollte nicht mehr benutzt werden. Sie benutzt einen Formatstring mit dem selben Format, wie dei der C Funktion strftime(). Diese Funktion ist seit Firefox 58+ nicht mehr vorhanden.

Beispiele

Veraltete Syntax

Die Date.prototype.toLocaleFormat Methode ist veraltet und wird entfernt werden (keine browserübergreifende Unterstützung, nur in Firefox verfügbar).

var today = new Date(); 
var date = today.toLocaleFormat('%A, %e. %B %Y');

console.log(date);
// In German locale
// "Freitag, 10. März 2017"

Alternative Standardsyntax mit der ECMAScript Intl API

Der ECMA-402 Standard spezifiziert Standardobjekte und Methoden (ECMAScript Intl API), die sprachabhängige Datums- und Zeitformatierung erlauben (verfügbar in Chrome 24+, Firefox 29+, IE11+, Safari10+).

Man kan jetzt die Date.prototype.toLocaleDateString Methode einsetzen, um einen Zeitpunkt zu formatieren.

var today = new Date();
var options = { weekday: 'long', year: 'numeric',
                month: 'long', day: 'numeric' };
var date = today.toLocaleDateString('de-DE', options);

console.log(date);
// "Freitag, 10. März 2017"

Oder man kann das Intl.DateTimeFormat Objekt einsetzen, welches die meisten Berechnungen zwischenspeichert, so dass das Formatieren schneller ist. Dieses ist nützlich, wenn Zeitpunkte in einer Schleife formatiert werden.

var options = { weekday: 'long', year: 'numeric', 
                month: 'long', day: 'numeric' }; 
var dateFormatter = new Intl.DateTimeFormat('de-DE', options)

var dates = [Date.UTC(2012, 11, 20, 3, 0, 0), 
             Date.UTC(2014, 04, 12, 8, 0, 0)]; 

dates.forEach(date => console.log(dateFormatter.format(date)));

// "Donnerstag, 20. Dezember 2012"
// "Montag, 12. Mai 2014"

Alternative Standardsyntax mit Date Methoden

Das Date Objekt enthält einige Methoden, um einen Benutzerdefinierten Datumsstring zu erhalten.

(new Date()).toLocaleFormat("%Y%m%d");
// "20170310"

Dieses kan konvertiert werde:

let now = new Date();
let date = now.getFullYear() * 10000 + 
          (now.getMonth() + 1) * 100 + now.getDate();

console.log(date);
// "20170310"

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

Schlagwörter: 
Mitwirkende an dieser Seite: schlagi123
Zuletzt aktualisiert von: schlagi123,