将中文日期转换为英文

4

我需要将2017年12月27日转换为英文日期。我尝试了以下方法:

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

但它只返回 null。可能的原因是什么?我该如何将它转换为英文日期?

2个回答

4

您的输入格式字符串有误。它应该与您提供的序列匹配(例如先年份,然后是月份等等)。

如果有特殊字符,您也应将其包含在内。

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


请注意,您的代码片段无法正常工作(您通过http加载了moment而不是https)。您的格式令牌参数不正确,您使用了而不是,这将在严格模式中失败。 - VincenzoC
@VincenzoC 抱歉,我不熟悉中文,我只是从 OP 提供的字符串中复制粘贴。 - alpakyol

1
您的格式参数不正确,'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() 来获取中文特定的格式标记。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接