将中文日期转换为英文

我需要将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()获得中国特定格式的令牌。

以上是 将中文日期转换为英文 的全部内容, 来源链接: utcz.com/qa/265815.html

回到顶部