我正在尝试更改由 moment.js 设置的日期的语言。默认是英语,但是我想设置德语。这些是我尝试过的:
var now = moment().format("LLL").lang("de");
它给NaN
.
var now = moment("de").format("LLL");
这甚至没有react。
var now = moment().format("LLL", "de");
没有变化:这仍然以英语产生结果。
这怎么可能?
我正在尝试更改由 moment.js 设置的日期的语言。默认是英语,但是我想设置德语。这些是我尝试过的:
var now = moment().format("LLL").lang("de");
它给NaN
.
var now = moment("de").format("LLL");
这甚至没有react。
var now = moment().format("LLL", "de");
没有变化:这仍然以英语产生结果。
这怎么可能?
您需要 moment.lang (警告:lang()
自 moment 起已弃用2.8.0
,请locale()
改用):
moment.lang("de").format('LLL');
http://momentjs.com/docs/#/i18n/
从 v2.8.1 开始,moment.locale('de')
设置本地化,但不返回moment
. 一些例子:
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'
总而言之,调用locale
全局moment
设置为所有未来moment
实例设置语言环境,但不返回 的实例moment
。调用locale
一个实例,为该实例设置它并返回该实例。
此外,正如 Shiv 在评论中所说,请确保您使用“moment-with-locales.min.js”而不是“moment.min.js”,否则它将无法工作。
我还必须导入语言:
import moment from 'moment'
import 'moment/locale/es' // without this line it didn't work
moment.locale('es')
然后像往常一样使用时刻
alert(moment(date).fromNow())
我刚刚用 bower 安装了 moment 并de.js
在我的 html 项目中链接为 javascript 资源。
bower install moment --save
您也可以手动下载moment.js
和de.js
。
链接de.js
我的主项目文件中的 自动更改了对 moment 类及其方法的所有访问的语言环境。
将有 没有必要再去做一个moment.locale("de").
或者
moment.lang("de").
源代码。
只需像这样链接您想要的语言环境:
<script src="/bower_components/moment/moment.js"></script>
<script src="/bower_components/moment/locale/de.js"></script>
或者bower_components
,如果您通过右键单击下载 moment.js 1990ies-style,则可以在没有路径的情况下链接库,这在大多数情况下仍然可以正常工作。
2017/2018 年底:其他答案有太多旧代码需要编辑,所以这里是我的替代答案:
需要
let moment = require('moment');
require('moment/locale/fr.js');
// or if you want to include all locales:
require("moment/min/locales.min");
与进口
import moment from 'moment';
import 'moment/locale/fr';
// or if you want to include all locales:
require("moment/min/locales.min");
利用:
moment.locale('fr');
moment().format('D MMM YY'); // Correct, set default global format
// moment.locale('fr').format('D MMM YY') //Wrong old versions for global default format
带时区
*要求:
require('moment-range');
require('moment-timezone');
*进口:
import 'moment-range';
import 'moment-timezone';
使用区域:
const newYork = moment.tz("2014-06-01 12:00", "America/New_York");
const losAngeles = newYork.clone().tz("America/Los_Angeles");
const london = newYork.clone().tz("Europe/London");
格式化日期的函数
const ISOtoDate = function (dateString, format='') {
// if date is not string use conversion:
// value.toLocaleDateString() +' '+ value.toLocaleTimeString();
if ( !dateString ) {
return '';
}
if (format ) {
return moment(dateString).format(format);
} else {
return moment(dateString); // It will use default global format
}
};