你如何验证日期格式?

时间:2013-01-09 20:54:50

标签: php date

我希望我的用户能够将日期格式更改为他们喜欢的内容:

$dateformat = $_POST['format'];
$datestamp = date($dateformat,$timestamp);

如何检查$dateformat是否是正确的有效日期格式字符串?

5 个答案:

答案 0 :(得分:1)

if( strtotime($_POST['format']) !== FALSE)
{
    echo 'valid date';
}
else
{
   echo 'invalid date';
}

但是对于有年份的日期> 2048未在当前PHP中定义

答案 1 :(得分:1)

如果您决定坚持使用某种格式,

checkdate()会告诉您是否可以解析日期:

strtotime()会告诉您是否可以解析日期字符串 - 您可以将任何字符串传递给它。如果无法解析日期,则该函数返回false。

作为旁注:我不会让用户选择如何输入日期。这显然会让你变得非常复杂 - 但是作为用户,我会问自己应该如何输入日期,因为大多数用户将习惯于关于日期的指示。为什么不为他们提供年,月,日的简单下拉,然后将这三个参数与checkdate()一起使用?

答案 2 :(得分:0)

我建议您为用户提供各种date格式的精选下拉菜单,然后将其存储在数据库中。然后,您可以拉出所选格式并将其插入date()函数的第一个参数。

答案 3 :(得分:0)

了解Zend_Date,但不知道将06-03-2012解释为6月3日或6月3日是不可能的。

你知道吗? 12/12/12是日期,欧洲人和美国人可以在没有误解的情况下谈论这一天; - )

答案 4 :(得分:0)

这是一个正则表达式实现:

$input = 'M d Y';
if(preg_match('#(dd|DD|m|M|mm|MM|y|yy|YY|-|\s)+#', $input)) {
    $valid = true;
    print date($input);
} else {
    print "invalid date format";
}

它假定允许使用空格字符和短划线字符。

它指定了此处列出的标志:http://php.net/manual/en/datetime.formats.date.php

更多信息:http://php.net/manual/en/function.date.php