I am trying to change the language of the date which is being set by moment.js. The default one is English, but I want to set the German language. These is what I tried:
var now = moment().format("LLL").lang("de");
It’s giving NaN
.
var now = moment("de").format("LLL");
This isn’t even reacting.
var now = moment().format("LLL", "de");
No change: this is still producing a result in English.
How is this possible?
You need moment.lang (WARNING: lang()
is deprecated since moment 2.8.0
, use locale()
instead):
moment.lang("de").format('LLL');
http://momentjs.com/docs/#/i18n/
As of v2.8.1, moment.locale('de')
sets the localization, but does not return a moment
. Some examples:
var march = moment('2017-03')
console.log(march.format('MMMM')) // 'March'
moment.locale('de') // returns the new locale, in this case 'de'
console.log(march.format('MMMM')) // 'March' still, since the instance was before the locale was set
var deMarch = moment('2017-03')
console.log(deMarch.format('MMMM')) // 'März'
// You can, however, change just the locale of a specific moment
march.locale('es')
console.log(march.format('MMMM')) // 'Marzo'
In summation, calling locale
on the global moment
sets the locale for all future moment
instances, but does not return an instance of moment
. Calling locale
on an instance, sets it for that instance AND returns that instance.
Also, as Shiv said in the comments, make sure you use "moment-with-locales.min.js" and not "moment.min.js", otherwise it won't work.