我需要将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格式(因为它包含中文字符而不是-
),但moment(String)
解析器可以识别它,因为默认情况下它使用宽容模式。[]
进行转义,如文档中转义字符部分所示。
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
加载了moment而不是https
)。您的格式令牌参数不正确,您使用了年
而不是月
,这将在严格模式中失败。 - VincenzoC