我正在尝试更改moment.js设置的日期的语言。默认是英语,但我想设置德语。以下是我的尝试:
var now = moment().format("LLL").lang("de");
它会产生NaN。
var now = moment("de").format("LLL");
这甚至不是反应。
var now = moment().format("LLL", "de");
没有变化:这仍然是用英语生成的结果。
这怎么可能呢?
我正在尝试更改moment.js设置的日期的语言。默认是英语,但我想设置德语。以下是我的尝试:
var now = moment().format("LLL").lang("de");
它会产生NaN。
var now = moment("de").format("LLL");
这甚至不是反应。
var now = moment().format("LLL", "de");
没有变化:这仍然是用英语生成的结果。
这怎么可能呢?
当前回答
经过一番挣扎后,这对我来说是有效的v2.26.0时刻:
import React from "react";
import moment from "moment";
import frLocale from "moment/locale/fr";
import esLocale from "moment/locale/es";
export default function App() {
moment.locale('fr', [frLocale, esLocale]) // can pass in 'en', 'fr', or 'es'
let x = moment("2020-01-01 00:00:01");
return (
<div className="App">
{x.format("LLL")}
<br />
{x.fromNow()}
</div>
);
}
你可以传入en fr es。如果需要另一种语言,则必须导入区域设置并将其添加到数组中。
如果你只需要支持一种语言,那就更简单了:
import React from "react";
import moment from "moment";
import "moment/locale/fr"; //always use French
export default function App() {
let x = moment("2020-01-01 00:00:01");
return (
<div className="App">
{x.format("LLL")}
<br />
{x.fromNow()}
</div>
);
}
——更新——
在一种情况下,像上面那样导入所有区域设置文件将使用最后导入的始终使用的区域设置(即。在上面的例子中是“es”),即使我把它设置为“fr”。似乎有效的解决方案是:
import moment from 'moment';
import 'moment/min/locales';
...
moment.locale('fr');
其他回答
流星用户:
Moment locale没有在meteor中默认安装,您只能在默认安装中获得'en' locale。
所以你使用的代码显示正确的其他答案:
moment.locale('it').format('LLL');
但在安装所需的区域设置之前,它将保持英文。
有一种很好的、干净的方法可以为meteor中的moment添加单独的locale(由rzymek提供)。
以通常的流星方式安装moment包:
meteor add rzymek:moment
然后添加你需要的语言环境,例如意大利语:
meteor add rzymek:moment-locale-it
或者如果你真的想添加所有可用的地区(添加大约30k到你的页面):
meteor add rzymek:moment-locales
使用momentjs 2.8+,执行以下操作:
moment.locale("de").format('LLL');
http://momentjs.com/docs/#/i18n/
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");
Use:
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
}
};
哎呀,笔误。我会解决这个问题: Var矩=函数(x){返回矩(x).locale('de');其他方法在某些条件下(对我来说)似乎不太管用。
我使用的是angular2-moment,但用法必须相似。
import { MomentModule } from "angular2-moment";
import moment = require("moment");
export class AppModule {
constructor() {
moment.locale('ru');
}
}