检查PHP日期时间戳是否正确?

时间:2011-11-12 16:30:43

标签: php mysql datetime

有没有办法检查PHP中的日期时间戳是否正确?

我目前在MySQL中使用yyyy-mm-dd hh:mm:ss,并希望确保用户在表单中提供与正确格式匹配的日期/时间戳。

4 个答案:

答案 0 :(得分:6)

[直到某人带来好(无错),工作checkdate()示例] 我正在使用这个功能:

<?php 
function validateMysqlDate( $date ){ 
    if (preg_match("/^(\d{4})-(\d{2})-(\d{2}) ([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/", $date, $matches)) { 
        if (checkdate($matches[2], $matches[3], $matches[1])) { 
            return true; 
        } 
    } 
    return false; 
} 

// check it: 
  $a = validateMysqlDate('2012-12-09 09:04:00');
  $b = validateMysqlDate('20122-12-09 09:04:00');
  $c = validateMysqlDate('2012-12_09 09:04:00');
  $d = validateMysqlDate('');
  var_dump( $a );
  var_dump( $b );
  var_dump( $c );
  var_dump( $d ); 
?>

和btw:checkdate()将为$ b返回true,尽管它不是有效的mysql日期时间

答案 1 :(得分:1)

您可以使用checkdate()功能检查日期的有效性。

http://php.net/manual/en/function.checkdate.php

您还可以将时间戳的所有部分传递给mktime(),如果返回false或-1(取决于PHP版本),那么它是无效的日期

http://www.php.net/manual/en/function.mktime.php

答案 2 :(得分:1)

这是一个重复的问题。有关其他讨论和答案,请参阅MySQL: How to check if a string is a valid DATE, TIME or DATETIME

答案 3 :(得分:0)

尝试解析给定的字符串,然后检查它是否与您输入的日期相同,请注意以下内容:

$dt = DateTime::createFromFormat('Y-m-d H:i:s', '2011-01-32 12:00:00');
echo $dt->format('Y-m-d H:i:s');
// outputs 2011-02-01 12:00:00

HTH。