2017-12-27 585 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

請注意,您的代碼段不起作用(您通過'http'代替'https'加載)。您的格式標記參數不正確,您使用'年'而不是'月',這會在[嚴格模式]下失敗(http://momentjs.com/guides/#/parsing/strict-mode/) – VincenzoC

+0

@VincenzoC對不起,我不熟悉中文,我從OP提供的字符串複製粘貼。 – alalp

1

您的格式參數不正確,'DDMMMMYYYY, HH:mm:ss'不匹配您的輸入(2017年12月27日)。

2017年12月27日不是ISO 8601格式(因爲它包括chineses字母代替-),但它是由moment(String)解析器因爲它使用forgiving mode缺省認可。

特殊字符可以使用方括號[]轉義,如文檔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()獲得中國特定格式的令牌。