检查日期字符串中是否指定了日期

时间:2013-07-02 19:46:13

标签: php javascript jquery date

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

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

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

4 个答案:

答案 0 :(得分:5)

如果您始终使用以下格式,也可以执行此操作:2012/10或2012/10/15

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

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

答案 1 :(得分:1)

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

$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);
}
?>

答案 2 :(得分:0)

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

答案 3 :(得分:0)

最简单快捷的方法是检查字符串的长度! 实际上,您需要区分: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()那样)。