我需要將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日
)。
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()
獲得中國特定格式的令牌。
請注意,您的代碼段不起作用(您通過'http'代替'https'加載)。您的格式標記參數不正確,您使用'年'而不是'月',這會在[嚴格模式]下失敗(http://momentjs.com/guides/#/parsing/strict-mode/) – VincenzoC
@VincenzoC對不起,我不熟悉中文,我從OP提供的字符串複製粘貼。 – alalp