将时间用/分割成数组,然后用checkdate()函数来判断

解决方案 »

  1.   

    $ss = "从06/31/19到07/01/99";
    $pp = "/(?:(?:((?:0[13578])|(?:1[02]))\/((?:0[1-9])|(?:1[0-9])|(?:2[0-9])|(?:3[0-1])))|(?:((?:0[469])|(?:11))\/((?:0[1-9])|(?:1[0-9])|(?:2[0-9])|(?:30)))|(?:((?:02))\/((?:0[1-9])|(?:1[0-9])|(?:2[0-9]))))\/\d{2}/";
    preg_match_all($pp,$ss,$aa);
    echo "<pre>";
    print_r($aa);$ss = "今天是02/31/1966,明天是11/30/0000";
    $pp = "/(?:(?:((?:0[13578])|(?:1[02]))\/((?:0[1-9])|(?:1[0-9])|(?:2[0-9])|(?:3[0-1])))|(?:((?:0[469])|(?:11))\/((?:0[1-9])|(?:1[0-9])|(?:2[0-9])|(?:30)))|(?:((?:02))\/((?:0[1-9])|(?:1[0-9])|(?:2[0-9]))))\/\d{4}/";
    preg_match_all($pp,$ss,$aa);
    echo "<pre>";
    print_r($aa);上面两个例子里面都含有错误的日期,所以只能匹配后面那个正确的,全部改成正确就可以都匹配了另:这个正则不能匹配闰年的情况,也就是02/29/1901也算正确最后:这个正则纯粹个人消遣,费劲,建议还是用楼上的方法比较合理
      

  2.   

    我都是用strtotime的,各种格式通吃