【问题标题】:Check whether day is specified in a date string检查日期字符串中是否指定了日期
【发布时间】:2013-07-02 19:46:12
【问题描述】:

测试用例场景 - 用户点击以下两个链接之一:2012/102012/10/15

我需要知道链接中是否指定了 DAY。我已经从我的 URL 中删除了链接的其余部分(上述除外),我是否正在将值传递给 AJAX 请求以更改存档页面上的日期。

我可以在 JS 或 PHP 中执行此操作 - 检查正则表达式 /\d{4}\/\d{2}\/\d{2}/ 是否是查看是否指定日期的唯一方法?

【问题讨论】:

  • 不知道这是否是唯一的方法(现在没有另一个方法)但似乎是一种可行的方法(记住它会检查格式)。如果您进行了测试并且它有效,那么您很高兴,您找到了解决方案。
  • 如何解决链接不一致的问题?
  • 不,一个愚蠢的方法是检查结果的大小。如果你少了 2 位数...
  • 您可以简单地count(explode("/", $str)) 然后将其拆分为组件然后...

标签: php javascript jquery date


【解决方案1】:

如果你总是得到这种格式,你也可以这样做:2012/10 或 2012/10/15

if( str.split("/").length == 3 ) { }

但没有任何保证,它将是数字。如果你想确定它们是数字,你确实需要那种正则表达式来匹配字符串。

【讨论】:

  • 您可能正在做某事。我已经肯定收到了####/## 格式,所以这可能是最简单的方法。干杯!
【解决方案2】:

您可以通过“/”分隔符来分解日期,然后计算项目:

$str = "2012/10";
$str2 = "2012/10/5";

echo count(explode("/", $str)); // 2
echo count(explode("/", $str2)); // 3

或者,把它变成一个函数:

<?php
function getDateParts($date) {
  $date = explode("/", $date);
  $y = !empty($date[0]) ? $date[0] : date("Y");
  $m = !empty($date[1]) ? $date[1] : date("m");
  $d = !empty($date[2]) ? $date[2] : date("d");
  return array($y, $m, $d);
}
?>

【讨论】:

  • 感谢PHP 的回复!类似于@Niels 响应。
  • 如果我要将它创建为一个函数,我建议键入这些值。array( 'year' =&gt; $y, 'month' =&gt; $m, 'day' =&gt; $d )
  • ^ +1;我打算这样做,但我的手指变得懒惰:(
【解决方案3】:

我个人会使用正则表达式,这是测试这类事情的好方法。或者,您可以split/implode / 上的字符串,您将拥有一个包含 3 个字符串的数组(希望如此),然后您可以对其进行测试。如果我以后要使用它,我可能会使用这种技术。

【讨论】:

    【解决方案4】:

    最简单最快的方法是检查字符串的长度! 其实你需要区分:yyyy/mm/dd(10个字符)和yyyy/mm(7个字符)。

    if(strlen($str) > 7) {
        // Contains day
    }
    else {
        // Does not contain day
    }
    

    即使您不使用前导零,这也将起作用! 事实上:

    2013/7/6 -> 8 characters (> 7 -> success)
    2013/7 -> 6 characters (< 7 -> success)
    

    这当然也是最快的代码,因为它不需要 PHP 遍历整个字符串(就像使用 explode() 一样)。

    【讨论】:

      猜你喜欢
      • 2020-06-23
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      相关资源
      最近更新 更多