2017-09-20 5 views
1

私は日付と短縮された月として日付をフォーマットできるようにしたい。 (例:en-gbは9月20日、enは9月20日)。しかし、Moment.jsに最も近いローカライズされたフォーマットは、2017年9月20日のenのフォーマット 'll'を持っています。私は 'll'から年を除外する新しいフォーマットを作りたいと思っています。どのようにこれを達成するのが最善でしょうか?Moment.jsロケールに新しいフォーマットオプションを追加するにはどうすればよいですか?

moment.locale('en'); 
moment().format('my-new-format') ---> Sep 20 
moment.locale('en-gb'); 
moment().format('my-new-format') ---> 20 Sep 
moment().format('ll')    ---> 20 Sep, 2017 
+1

希望、これは(同様の質問)ことができます - https://stackoverflow.com/questions/39028993/custom-long-date-format-in-moment-js –

+0

間違いなく同様の質問です!しかし、その答えはそれほど有用ではありません(私がこの問題をどのように解決したいのかということの証拠を提供することは不可能です)。私は、libaryまたはlocaleファイルを直接編集したくありません。 – breakfast

答えて

0

あなたが上書きしたくない場合はupdateLocale

moment.updateLocale('en', { 
    longDateFormat : { 
     LT: "h:mm A", 
     LTS: "h:mm:ss A", 
     L: "MM/DD/YYYY", 
     l: "M/D/YYYY", 
     LL: "MMMM Do YYYY", 
     ll: "MMM D YYYY", 
     LLL: "MMMM Do YYYY LT", 
     lll: "MMM D YYYY LT", 
     LLLL: "dddd, MMMM Do YYYY LT", 
     llll: "ddd, MMM D YYYY LT" 
    } 
}); 

に建て使用してローカライズ上書きすることができます。

私が欲しい最終結果(今日の仮定は、9月20日です)すでに存在するロケールを使用していますが、まだそれを使用していますが、私は新しいフォーマットを追加することが私の知識ではサポートされていないので、このような辞書に行きます。

const formats = { 
    en: "MMM D", 
    sv: "DD MMM" 
} 
const customFormat() => formats[moment.locale()]; 
moment.locale("en"); 
console.log(moment().format(customFormat())); // Jan 1 
moment.locale("sv"); 
console.log(moment().format(customFormat())); // 01 Jan 
+2

リンクをクリックするともっと多くの回答を提供してください。これはリンクがダウンすると役に立たない回答だからです –

+0

LPL、私はあなたがupdateLocale()を指していると仮定していますが、私が欲しいもののために働く(私が間違っていれば私を修正する)。私は 'll'を変更したくないです、私は 'll'を保ちたいが全く新しいフォーマットを追加したい。 updateLocale()は既存の書式を変更するだけですが、新しい書式を追加することはできません。 – breakfast

+0

はい、私は、残念なことにそれのためのものは何もないと思います。その場合、 'let custom = {en:" MM D "、sv:" D MM "}'のような私のカスタムフォーマットの辞書でそれを行い、 'moment.locale()'でビルドを使用し、 'moment.format(custom [moment.locale()])' – LPL

関連する問題