代码之家  ›  专栏  ›  技术社区  ›  Suhail Gupta

将中文日期转换为英文

  •  4
  • Suhail Gupta  · 技术社区  · 8 年前

    我需要转换 2017å¹´12月27日 至英文日期。要转换,我正在尝试:

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

    但它什么也没有 null . 这可能是什么原因?如何将其转换为英文日期?

    2 回复  |  直到 8 年前
        1
  •  3
  •   alpakyol    8 年前

    输入格式字符串错误。它应该与你给出的顺序相匹配(比如先年,然后月,等等)。

    您还应该在其中包含特殊字符(如果有)。

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

    您的格式参数不正确, 'DDMMMMYYYY, HH:mm:ss' 与您的输入不匹配( 2017å¹´12月27日 ).

    20171227 不是ISO 8601格式(因为它包括中文字母,而不是 - ),但它是由 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() 获取中文特定格式令牌。