2017-12-27 40 views
2

2017年12月27日を英語の日付に変換する必要があります。変換しようとしていた:中国語の日付を英語に変換する

moment("2017年12月27日", 'DDMMMMYYYY, HH:mm:ss', 'zh-cn').locale('en').toISOString(); 

しかし、それはnull以外何も出ていません。これの理由は何でしょうか?どのように私はそれを英語の日付に変換できますか?

答えて

3

入力フォーマットの文字列が間違っています。それはあなたが与えたシーケンスと一致しなければなりません(年の初め、月のように)。

(もしあれば)特殊文字も含める必要があります。

console.log(moment("2017年12月27日", 'YYYY年MM月DD日', 'en', true).toISOString());
<script src="https://momentjs.com/downloads/moment-with-locales.min.js"></script>

+0

スニペットが機能しないことに注意してください(あなたは 'https'の代わりに' http'でモーメントを読み込みました)。あなたの書式トークンパラメータが間違っていて、 '月'の代わりに '年 'を使用した場合、これは[厳密モード]で失敗します(http://momentjs.com/guides/#/parsing/strict-mode/) – VincenzoC

+0

@VincenzoC Sorry 、私は中国語に慣れていない、私はOPの提供文字列からコピー貼り。 – alalp

1

あなたの形式のパラメータが間違っている、'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()を使用しました。

関連する問題