如果按以下格式提交日期,則爲$month=2, $day=31, $year= 2010
。我如何驗證使用PHP日期函數,如果它是有效的日期或沒有?謝謝。如何使用PHP驗證日期
6
A
回答
13
http://php.net/manual/en/function.checkdate.php
的checkdate
功能是谷歌從搜索 「PHP驗證日期」
在你的情況下,第一結果,用法是:
checkdate($month, $day, $year);
1
bool checkdate (int $month , int $day , int $year)
2
嘗試checkdate() http://php.net/manual/en/function.checkdate.php
倍checkdate($month, $day, $year);
的回報,如果真正的日期是有效的/假,否則
0
下面是我想出到了checkdate的嚴格性結合()的日期時間的便利性(它把像「下週四」或「項2周前')
如果輸入字符串無效,則返回false。空日期返回爲null,非空日期格式爲MySQL樣式'Y-m-d'。
/**
* @return variant null for empty date, mysql date string for valid date, or false for invalid date string
*/
function myCheckDate($date)
{
$result=false;
if($date=='')
{
$result=null;
}
else
{
//Best of both worlds
// - flexibility of DateTime (next thursday, 2 weeks ago, etc)
// - strictness of checkdate (2000-02-31 is not allowed)
$m=false;
$d=false;
$y=false;
$parts=date_parse($date);
if($parts!==false)
{
$m=$parts['month'];
$d=$parts['day'];
$y=$parts['year'];
}
if($m!==false && $d!==false)
{
if($y===false) $y=date('Y'); //Default to this year
//Try for a specific date - this catches bad entries like 'feb 31, 2000'
if(checkdate($m,$d,$y)) $result=sprintf('%04d-%02d-%02d',$y,$m,$d);
}
else
{
//Try for something more generic - this allows entries like 'next thursday'
$dt=false;
try{ $dt=new \DateTime($date); }catch(\Exception $e){ $dt=false; }
if($dt!==false) $result=$dt->format('Y-m-d');
}
}
return $result;
}
3
<?php
function validateDate($date, $format = 'Y-m-d H:i:s'){
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) == $date;
}
?>
var_dump(validateDate('2012-02-28 12:12:12')); # true
var_dump(validateDate('2012-02-30 12:12:12')); # false
var_dump(validateDate('2012-02-28', 'Y-m-d')); # true
var_dump(validateDate('28/02/2012', 'd/m/Y')); # true
var_dump(validateDate('30/02/2012', 'd/m/Y')); # false
相關問題
- 1. 如何使用PHP驗證日期?
- 2. 如何在php中驗證日期?
- 3. 使用jQuery驗證的日期驗證
- 4. 日期驗證在PHP
- 5. 在PHP中驗證日期
- 6. 在PHP中驗證日期
- 7. 使用javascript驗證日期?
- 8. 使用DataTypeAttribute驗證日期
- 9. 使用javascript驗證日期
- 10. 使用moment.js驗證日期
- 11. 使用CompareValidator驗證日期
- 12. 如何使用jQuery驗證驗證日期類型字段
- 13. 如何驗證日期
- 14. 如何使用sfForm無日期驗證日期?
- 15. 如何使用struts2中的<sx:datetimepicker>驗證日期,日期?
- 16. 如何使用Javascript驗證信用卡到期日期?
- 17. 日期驗證
- 18. 日期驗證
- 19. 日期驗證
- 20. 日期驗證
- 21. 日期驗證
- 22. 日期驗證
- 23. 日期驗證
- 24. 驗證asp.net日曆日期將來使用asp.net驗證器
- 25. 我如何使用Struts驗證器組合使用字段驗證日期
- 26. 使用PHP驗證日期/時間的幫助如果語句
- 27. 使用jquery插件驗證開始日期和結束日期:驗證
- 28. 禁用Drupal日期驗證
- 29. PHP - 正則表達式驗證日期
- 30. Php正則表達式日期驗證
是否正在通過**文本輸入**字段中輸入或**日期複製下拉菜單**? 通常,對於任何日期明智的,我建議**下拉菜單**,因爲這可以是一個非常簡單和簡單的日期驗證和驗證方式。 – Eli 2011-02-12 15:38:48
@Eli這是怎麼回事?任何人都可以使用螢火蟲或鉻檢查器在下拉菜單中編輯值。您應該_allways_驗證來自瀏覽器的數據。 – Samuel 2012-04-26 19:37:25