【问题标题】:trim a string containing time from date picker从日期选择器修剪包含时间的字符串
【发布时间】:2015-12-19 21:46:16
【问题描述】:

我正在使用 Angular UI 日期选择器来获取日期。我将日期保存到字符串变量中。问题是我希望以非常特定的格式修剪日期。我不知道正则表达式,我认为这是在 javascript 中执行此操作的正确方法?有人可以告诉我我可以在一个函数中编写的正则表达式,该函数将仅使用本机 javascript 将输入修剪为特定输出。 例如 输入:

2015 年 9 月 20 日星期四 00:00:00 GMT (+5:00) 巴基斯坦标准时间。

输出应该是:

2015 年 2 月 20 日 00:00:00。

非常感谢!

【问题讨论】:

  • 我认为您不需要正则表达式,您是否尝试过看看这个:stackoverflow.com/questions/3552461/…
  • 该示例使用 getDate 方法,我认为该方法仅获取当前日期?如果我使用日期选择器随机选择日期,那么我不会这样做吗?它也没有回答我想要的时间 hh:mm:ss。或者我在那个链接上错过了什么?

标签: javascript regex angularjs date


【解决方案1】:
<html>
  <body>
    <script language=javascript>
      var txt='Thursday sep 20-2-2015 00:00:00 GMT (+5:00) Pakistan Standard Time';

      var re1='.*?';  // Non-greedy match on filler
      var re2='(20-2-2015)';  // DDMMYYYY 1
      var re3='(\\s+)'; // White Space 1
      var re4='(00:00:00)'; // HourMinuteSec 1

      var p = new RegExp(re1+re2+re3+re4,["i"]);
      var m = p.exec(txt);
      if (m != null)
      {
          var ddmmyyyy1=m[1];
          var ws1=m[2];
          var time1=m[3];
          document.write("("+ddmmyyyy1.replace(/</,"&lt;")+")"+"("+ws1.replace(/</,"&lt;")+")"+"("+time1.replace(/</,"&lt;")+")"+"\n");
      }
    </script>
  </body>
</html>

【讨论】:

    【解决方案2】:

    这应该会给你你想要的:

    var date = "Thursday sep 20-2-2015 00:00:00 GMT (+5:00) Pakistan Standard Time";
    var expectedDate = date.match(/\d{1,2}-\d{1,2}-\d{4}\s\d{2}:\d{2}:\d{2}/g);
    

    【讨论】:

    • 非常感谢!!如果它不麻烦你能解释一下这个表达式是做什么的吗?我的意思是它是如何修剪的?谢谢。
    • @AhsanAbbas,这里我们不修剪。我们正在寻找与我们的表达相匹配的地方。 \d 用于数字 [0-9]\d{1,2} 表示数字的出现,最小 1,最大 2。然后您在字符串中有 - 符号。 \s 用于空白。 \d{4} 说,恰好匹配 4 次出现。最后/g 用于全局匹配。
    猜你喜欢
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    相关资源
    最近更新 更多