【问题标题】:Remove leading zeroes in datestring删除日期字符串中的前导零
【发布时间】:2012-01-17 15:31:57
【问题描述】:

我有一个日期字符串,如下所示:2011-02-03。 我想删除字符串的日期和月份部分中的前导零。我该怎么做?

【问题讨论】:

    标签: javascript


    【解决方案1】:
    "2011-02-03".replace(/-0+/g, '-'); // => "2011-2-3"
    

    [更新]

    根据@Lucky 的问题,您可以考虑其他可能有前导零的格式:

    "02-03".replace(/(^|-)0+/g, "$1"); // => "2-3"
    

    【讨论】:

    • 如果您想说明可能有多个前导零,您可以将其更改为:"2011-002-03".replace(/-0+/g, '-');
    • 如果值为02-03怎么办?它将给出 2-03 .. 我们如何处理这种情况
    【解决方案2】:

    最简单的做法是在- 上拆分字符串,然后如果索引 1 或 2 处的值以 0 开头,则将所有 0 替换为 ''。类似的东西(我没有测试过)

    var tokens = '2011-02-03'.split('-'),
        mm = tokens[1],
        dd = tokens[2];
    
    if (mm.charAt(0) === '0') tokens[1] = mm.replace("0", "");
    if (dd.charAt(0) === '0') tokens[2] = dd.replace("0", "");
    
    var newString = tokens[0] + "-" tokens[1] + "-" + tokens[2];
    

    【讨论】:

      【解决方案3】:

      如果您不想使用 substring 方法,可以使用库 http://www.datejs.com/,它为您提供了很多格式化选项。

      【讨论】:

        【解决方案4】:

        没有正则表达式:

        function stripLeadingZerosDate(dateStr){
            return dateStr.split('-').reduce(function(date, datePart){
                return date += parseInt(datePart) + '-'
            }, '').slice(0, -1);
        }
        
        stripLeadingZerosDate('01-02-2016')      // 1-2-2016
        stripLeadingZerosDate('2016-02-01')      // 2016-2-1
        

        【讨论】:

          猜你喜欢
          • 2022-12-20
          • 2011-04-09
          • 2017-05-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-09
          • 1970-01-01
          • 2012-02-06
          相关资源
          最近更新 更多