Pab*_*pez 47 php validation date
我试图建立一个PHP日期验证(MM/DD/YYYY),但我遇到了问题.这是我得到的样本:
$date_regex = '%\A(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d\z%';
$test_date = '03/22/2010';
if (preg_match($date_regex, $test_date,$_POST['birthday']) ==true) {
$errors[] = 'user name most have no spaces';`
Run Code Online (Sandbox Code Playgroud)
Nic*_*ica 75
你可以使用checkdate.例如,像这样:
$test_date = '03/22/2010';
$test_arr = explode('/', $test_date);
if (checkdate($test_arr[0], $test_arr[1], $test_arr[2])) {
// valid date ...
}
Run Code Online (Sandbox Code Playgroud)
一种更偏执的方法,不盲目相信输入:
$test_date = '03/22/2010';
$test_arr = explode('/', $test_date);
if (count($test_arr) == 3) {
if (checkdate($test_arr[0], $test_arr[1], $test_arr[2])) {
// valid date ...
} else {
// problem with dates ...
}
} else {
// problem with input ...
}
Run Code Online (Sandbox Code Playgroud)
sal*_*the 51
你可以使用DateTime该类的一些方法,这可能很方便; 即,DateTime::createFromFormat()与...结合DateTime::getLastErrors().
$test_date = '03/22/2010';
$date = DateTime::createFromFormat('m/d/Y', $test_date);
$date_errors = DateTime::getLastErrors();
if ($date_errors['warning_count'] + $date_errors['error_count'] > 0) {
$errors[] = 'Some useful error message goes here.';
}
Run Code Online (Sandbox Code Playgroud)
这甚至允许我们看到实际导致日期解析警告/错误的原因(查看warnings和errors数组$date_errors).
Joe*_*oel 28
虽然checkdate很好,但这似乎是非常简洁的功能验证,你也可以给格式.[ 来源 ]
function validateDate($date, $format = 'Y-m-d H:i:s') {
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) == $date;
}
Run Code Online (Sandbox Code Playgroud)
->format()对于日期无效但createFromFormat仍设法创建DateTime对象的情况,需要
额外的.例如:
// Gives "2016-11-10 ..." because Thursday falls on Nov 10
DateTime::createFromFormat('D M j Y', 'Thu Nov 9 2016');
// false, Nov 9 is a Wednesday
validateDate('Thu Nov 9 2016', 'D M j Y');
Run Code Online (Sandbox Code Playgroud)
而不是庞大的DateTime对象..只需使用核心date()函数
function isValidDate($date, $format= 'Y-m-d'){
return $date == date($format, strtotime($date));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90287 次 |
| 最近记录: |