Moment.jsによって設定されている日付の言語を変更しようとしています。デフォルトは英語ですが、ドイツ語が欲しいです。これらは私が試したものです:
var now = moment().format('LLL').lang('de');
nANを与えている、動作しませんでした。
var now = moment('de').format('LLL');
反応しなくても、うまくいきませんでした。
var now = moment().format('LLL','de');
それでも英語を与える変化は、同様にうまくいきませんでした。
これはどのように可能ですか?
あなたはmoment.lang(WARNING:lang()
は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
を呼び出すと、そのインスタンスに設定され、そのインスタンスが返されます。
私も言語をインポートしなければなりませんでした:
import moment from 'moment'
import 'moment/locale/es' // without this line it didn't work
moment.locale('es')
それからあなたが通常するように瞬間を使ってください
alert(moment(date).fromNow())
私はちょうどbowerを使ってmomentをインストールし、私のhtmlプロジェクトのjavascriptリソースとしてde.js
をリンクしました。
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>
右クリックでmoment.js 1990ies-styleをダウンロードした場合は、bower_components
パスなしでライブラリをリンクすることもできます。
あなたのスクリプトにmoment.lang(navigator.language)
を追加する必要があるでしょう。
また、表示したい各国のロケールも追加する必要があります。たとえば、GBやFRの場合は、moment.jsライブラリにそのロケール形式を追加する必要があります。そのような形式の例はmomentjsのドキュメントにあります。 moment.jsにこのフォーマットを追加しないのであれば、それが私が現在見ている唯一のものであるため、常にUSロケールを選択します。
2017/2018年末:他人の回答には編集するには古すぎるコードがあります。
と必要
let moment = require('moment');
require('moment/locale/fr.js');
輸入品あり
import moment from 'moment';
import 'moment/locale/fr';
つかいます:
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
}
};
流星のユーザーのために:
瞬間ロケールはデフォルトではmeteorにインストールされていません。デフォルトのインストールでは 'en'ロケールしか取得できません。
それで、あなたは他の答えで正しく示されるようにコードを使います:
moment.locale('it').format('LLL');
ただし、必要なロケールをインストールするまでは英語のままです。
瞬間の個々のロケールをmeteorに追加するための素晴らしい、きれいな方法があります(rzymekによって供給されます)。
次のコマンドを使って、momentパッケージを通常の流星形でインストールします。
meteor add rzymek:moment
それから、必要なロケールを追加してください。イタリア語
meteor add rzymek:moment-locale-it
あるいは、利用可能なすべてのロケールを本当に追加したい場合(ページに約30Kを追加します):
meteor add rzymek:moment-locales
2.18.1以降の場合
moment.locale("de");
var m = moment().format("LLL")
そのようにうまくいきます:return moment(status.created_at).locale('es').fromNow();
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MomentJS</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script type="text/javascript" src="moment.js"></script>
<script type="text/javascript" src="locale/ne.js"></script>
</head>
<body>
<script>
jQuery(document).ready(function($) {
moment.locale('en'); // default the locale to English
var localLocale = moment();
moment.locale('ne'); // change the global locale to Nepalese
var ne1 = localLocale.format('LLLL');
var ne2 = moment().format('LLLL');
$('.ne1').text(ne1);
$('.ne2').text(ne2);
});
</script>
<p class="ne1"></p>
<p class="ne2"></p>
</body>
</html>
私はgulpや友達と一緒にwebpackを使っていたので( このジェネレータ が私のためにすべてを設定した)私はbower.jsonファイルに変更を加えなければならなかった。私は、パッケージのデフォルトのインポートを上書きして、すべての言語に付属するファイルを選択しなければなりませんでした。
"overrides": {
"moment": {
"main": [
"min/moment-with-locales.min.js"
]
}
}
これは私の完全なbower.jsonファイルです。
{
"name": "html5",
"version": "0.0.0",
"dependencies": {
"angular-animate": "~1.4.2",
"angular-cookies": "~1.4.2",
"angular-touch": "~1.4.2",
"angular-sanitize": "~1.4.2",
"angular-messages": "~1.4.2",
"angular-ui-router": "~0.2.15",
"bootstrap-sass": "~3.3.5",
"angular-bootstrap": "~0.13.4",
"malarkey": "yuanqing/malarkey#~1.3.1",
"angular-toastr": "~1.5.0",
"moment": "~2.10.6",
"animate.css": "~3.4.0",
"angular": "~1.4.2",
"lodash": "^4.13.1",
"angular-moment": "^0.10.3",
"angularLocalStorage": "ngStorage#^0.3.2",
"ngstorage": "^0.3.10"
},
"devDependencies": {
"angular-mocks": "~1.4.2"
},
"overrides": {
"bootstrap-sass": {
"main": [
"assets/stylesheets/_bootstrap.scss",
"assets/fonts/bootstrap/glyphicons-halflings-regular.eot",
"assets/fonts/bootstrap/glyphicons-halflings-regular.svg",
"assets/fonts/bootstrap/glyphicons-halflings-regular.ttf",
"assets/fonts/bootstrap/glyphicons-halflings-regular.woff",
"assets/fonts/bootstrap/glyphicons-halflings-regular.woff2"
]
},
"moment": {
"main": [
"min/moment-with-locales.min.js"
]
}
},
"resolutions": {
"angular": "~1.4.2"
}
}
私にとっては、いくつか変更を加える必要があります(ver。2.20)。
moment.locale('de')
で設定し、現在の日付を表す新しいオブジェクトをmoment()
(括弧に注目)で作成してからformat('LLL')
で作成します。括弧は重要です。つまり、
moment.locale('de');
var now = moment();
now.format('LLL');
moment-with-locale.js
を使用してください。ファイルにはすべてのロケール情報が含まれており、ファイルサイズも大きくなります。 locale
フォルダをダウンロードするだけでは不十分です。必要に応じて、名前をmoment.js
に変更します。私の場合、Djangoはmoment-with-locale.js
の読み込みを拒否しています。編集:ファイルの名前を変更する必要はないことがわかった。私はただページでそれを呼び出すのを忘れたのでDjangoはそれをロードする必要があるとは思わないので、私のせいです。
Versionごとにmoment jsの言語を変更する
バージョン:2.8 +
moment.locale( 'hi');
バージョン:2.5.1
moment.lang( 'hi');
私はangular2-momentを使っていますが、使い方は似ているはずです。
import { MomentModule } from "angular2-moment";
import moment = require("moment");
export class AppModule {
constructor() {
moment.locale('ru');
}
}
momentjs 2.12 +の場合、次のようにします。
moment.updateLocale('de');
また、既存のロケールを変更するにはmoment.updateLocale(localeName, config)
を使用する必要があります。 moment.defineLocale(localeName, config)
は新しいロケールを作成するためだけに使われるべきです。
おっとペンの滑り落ちる。私はこれを解決したいと思います:var moment = function(x) { return moment(x).locale('de'); }
他の方法は(私にとっては)条件の下で固執するようには思えません。