Php 正在验证用户日期输入

Php 正在验证用户日期输入,php,Php,大家好,我有一个表单,它接受表单中的用户日期输入 dd/mm/yyyy yyyy-mm-dd 并将其转换为表单中的日期 dd/mm/yyyy yyyy-mm-dd 如果用户最初输入的日期格式不正确,如何返回错误?e、 g.2012年12月 这是我目前掌握的代码 // collect values from a form sent with method=get $uk_date = $_GET["date"]; // convert between date formats $pa

大家好,我有一个表单,它接受表单中的用户日期输入

dd/mm/yyyy
yyyy-mm-dd
并将其转换为表单中的日期

dd/mm/yyyy
yyyy-mm-dd
如果用户最初输入的日期格式不正确,如何返回错误?e、 g.2012年12月

这是我目前掌握的代码

// collect values from a form sent with method=get

$uk_date = $_GET["date"];

// convert between date formats

$parts = explode("/", $uk_date, 3);
$us_date = $parts[2] . "-" . $parts[1] . "-" . $parts[0];
echo $us_date.'<br>';
//从使用method=get发送的表单中收集值
$uk_date=$_GET[“date”];
//在日期格式之间转换
$parts=爆炸(“/”,$uk_date,3);
$us_date=$parts[2]。"-" . $第[1]部分。"-" . $零件[0];
回显$us_日期。“
”;
提前谢谢


顺便说一句,我正在使用PHP。

而不是验证日期,为什么不在提交表单后将日期转换为正确的格式呢?这样,用户就可以按自己想要的任何格式输入日期

$date = date('Y-m-d', strtotime($_GET["date"]));

为了坚持我看到的代码,我会检查以确保日期的每个分解部分都是有效的,并返回一个错误,其中包括错误发生的位置

如下所示:

$day_error = 'The day has not been entered correctly';
$month_error = 'The month has not been entered correctly';
$year_error = 'The year has not been entered correctly';

if(!isset(part[0]) | $part[0]<1 | $part[0]>31) return $day_error;
if(!isset(part[1]) | $part[1]<1 | $part[1]>12) return $month_error;
if(!isset(part[2]) | strlen($part[2]) != 4) return $year_error; 
$day_error='未正确输入日期';
$month_error='未正确输入月份';
$year_error='未正确输入年份';
如果(!isset(part[0])|$part[0]31)返回$day_错误;
如果(!isset(part[1])|$part[1]12)返回$month_错误;
如果(!isset(part[2])| strlen($part[2])!=4)返回$year_错误;

然而,我看到的其他答案似乎是一种更简单、更健壮的函数查找方法

如果您使用的是PHP5.3,则可以使用DateTime类编写代码。试试这个方法你想在javascript中验证日期吗?两个问题1)我应该把它放在代码的哪一部分?2) 是否能够区分2012年6月1日、2012年6月1日、2012年6月1日和2012年6月1日的条目?代码不起作用。我想你忘了(!isset(第[0]部分)上的$…ETC使用上述函数,用户可以键入他们想要的任何格式,它将被更改为您想要的格式,因此,如果用户在2000年8月15日、2000年8月15日或其他时间键入,则$date变量的格式将为2000-08-15。如果用户键入的值无效,如12/2012或xxx,则如何使用javascrip然后您可以禁用输入,这样他们就必须使用日期选择器,然后您可以将日期选择器的格式设置为您想要的任何格式-