我希望我的用户能够将日期格式更改为他们喜欢的任何格式:
$dateformat = $_POST['format'];
$datestamp = date($dateformat,$timestamp);
如何检查是否$dateformat
是正确有效的日期格式字符串?
if( strtotime($_POST['format']) !== FALSE)
{
echo 'valid date';
}
else
{
echo 'invalid date';
}
但不适用于当前 PHP 中未定义的年份 > 2048 的日期
如果您决定坚持使用某种格式, checkdate()将告诉您是否可以解析日期:
strtotime()将让您知道是否可以解析日期字符串 - 您可以将任何字符串传递给它。如果无法解析日期,则该函数返回 false。
作为旁注:我不会让用户选择如何输入日期。显然,这会让您变得非常复杂 - 但作为用户,我也会问自己应该如何输入日期,因为大多数用户将习惯于有关日期的说明。为什么不为他们提供一个简单的年、月和日期下拉菜单,然后将这三个参数与 checkdate() 一起使用?
我建议您为您的用户提供各种日期格式的选择下拉菜单,然后将其存储在数据库中。然后,您可以提取他们选择的格式并将其插入date()
函数的第一个参数中。
这是一个正则表达式实现:
$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
查看 Zend_Date,但不知道将 06-03-2012 解释为 3 月 6 日或 6 月 3 日,这是不可能的。
你知道?12/12/12 是日期,欧洲人和美国人可以毫无误解地谈论这一天;-)