有没有办法检查PHP中的日期时间戳是否正确?
我目前在MySQL中使用yyyy-mm-dd hh:mm:ss
,并希望确保用户在表单中提供与正确格式匹配的日期/时间戳。
答案 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版本),那么它是无效的日期
答案 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。