代码之家  ›  专栏  ›  技术社区  ›  Frido Emans

具有特定区域设置的javascript日期分析

  •  2
  • Frido Emans  · 技术社区  · 7 年前

    我从用户输入接收日期/时间对象,并希望将其解析为一个javascript日期对象。日期格式为: 02/06/2018 00:59:03 这意味着2018年6月2日;英国地区。 虽然这看起来非常简单,而且是一个超宽的用例场景,但是我似乎在 documentation 如何指定要用于解析的区域设置。

    解析器所做的只是假设我使用的是US语言环境格式,它默认为先是月份,然后是日期,然后是年份,所以它混合了月份和日期。

    目前我看到的唯一可用的选项是编写自己的解析器,这很好(当然不是,因为我明天可能需要另一个区域设置),但对我来说似乎有点80年代。

    也许我忽略了文档中的一些内容。但是有人有其他的解决办法吗?非常感谢。

    另外,我很难想象还没有人问这个问题,但我的搜索也没有找到多少。

    1 回复  |  直到 7 年前
        1
  •  3
  •   chuckx    7 年前

    Date() documentation:

    var dateString = '02/06/2018 00:59:03';
    
    var dateParser = /(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2}):(\d{2})/;
    var match = dateString.match(dateParser);
    var date = new Date(
        match[3],  // year
        match[2]-1,  // monthIndex
        match[1],  // day
        match[4],  // hours
        match[5],  // minutes
        match[6]  //seconds
    );
    
    console.log('Input: ' + dateString);
    console.log('Output (en-US): ' + date.toLocaleString('en-US'));
    console.log('Output (en-GB): ' + date.toLocaleString('en-GB'));

    / :