2017年12月27日
を英語の日付に変換する必要があります。変換しようとしていた:中国語の日付を英語に変換する
moment("2017年12月27日", 'DDMMMMYYYY, HH:mm:ss', 'zh-cn').locale('en').toISOString();
しかし、それはnull
以外何も出ていません。これの理由は何でしょうか?どのように私はそれを英語の日付に変換できますか?
2017年12月27日
を英語の日付に変換する必要があります。変換しようとしていた:中国語の日付を英語に変換する
moment("2017年12月27日", 'DDMMMMYYYY, HH:mm:ss', 'zh-cn').locale('en').toISOString();
しかし、それはnull
以外何も出ていません。これの理由は何でしょうか?どのように私はそれを英語の日付に変換できますか?
入力フォーマットの文字列が間違っています。それはあなたが与えたシーケンスと一致しなければなりません(年の初め、月のように)。
(もしあれば)特殊文字も含める必要があります。
console.log(moment("2017年12月27日", 'YYYY年MM月DD日', 'en', true).toISOString());
<script src="https://momentjs.com/downloads/moment-with-locales.min.js"></script>
あなたの形式のパラメータが間違っている、'DDMMMMYYYY, HH:mm:ss'
は、あなたの入力(2017年12月27日
)と一致していません。 (それは代わり-
のCHINESES文字が含まれているため)、それはなぜならそれはforgiving mode使用デフォルトによってmoment(String)
パーサによって認識さ
2017年12月27日
は、ISO 8601形式ではありません。
ドキュメントのEscaping charactersセクションに示すように、特殊文字は角括弧[]
を使用してエスケープすることができます。私のサンプルコードで
var fmt = moment.localeData('zh-cn').longDateFormat('LL'); // YYYY年M月D日
var m = moment("2017年12月27日", fmt, 'zh-cn');
console.log(m.locale('en').toISOString());
var m2 = moment("2017年12月27日", 'YYYY[年]M[月]D[日]', 'zh-cn', true);
console.log(m2.locale('en').toISOString());
console.log(m2.locale('en').format('LLLL'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment-with-locales.min.js"></script>
、私は中国の特定の形式のトークンを取得するためにlocaleData()
とlongDateFormat()
を使用しました。
スニペットが機能しないことに注意してください(あなたは 'https'の代わりに' http'でモーメントを読み込みました)。あなたの書式トークンパラメータが間違っていて、 '月'の代わりに '年 'を使用した場合、これは[厳密モード]で失敗します(http://momentjs.com/guides/#/parsing/strict-mode/) – VincenzoC
@VincenzoC Sorry 、私は中国語に慣れていない、私はOPの提供文字列からコピー貼り。 – alalp