0

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

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

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

4

5 回答 5

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

但不适用于当前 PHP 中未定义的年份 > 2048 的日期

于 2013-01-09T21:02:43.457 回答
1

如果您决定坚持使用某种格式, checkdate()将告诉您是否可以解析日期:

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

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

于 2013-01-09T21:02:58.410 回答
0

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

于 2013-01-09T20:59:25.123 回答
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

于 2013-01-09T21:11:54.443 回答
0

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

你知道?12/12/12 是日期,欧洲人和美国人可以毫无误解地谈论这一天;-)

于 2013-01-09T21:02:40.243 回答