如何檢查變量$date
是否包含2011-09-20形式的日期?這是爲了知道$date
是否包含任何字母,因爲我想使用date()
並給出錯誤。如何檢查變量是否包含日期或日期和文本?
回答
試試這個:
$date = '2011-09-20';
list($y, $m, $d) = explode("-", $date);
if(checkdate($m, $d, $y)){
echo "OK Date";
} else {
echo "BAD Date";
}
當試圖解析帶有字符串內容的變量時,建議避免非正確的錯誤: 'if(is_numeric($ y)&& is_numeric($ m)&& is_numeric($ d)&& checkdate($ m,$ d, $ y)){' – ldmuniz
也許它幫助,如果你嘗試is_numeric()結合的str_replace()方法,像這樣:
<?php
$isValid = is_numeric(str_replace('-', '', $myDateToCheck));
?>
當然,這並沒有說明日期的格式,而是顯示變量是否包含任何非數字字符。
如果上述示例返回true,則可能需要使用checkdate()方法來進一步調查變量。
儘管它並不完美,
if (false === strtotime($date)) {
echo 'invalid date';
else {
echo 'valid date';
}
爲什麼?它出什麼問題了?我認爲這是完美的方式,允許所有可能的日期格式。 –
好吧,strtotime('now')會返回一個時間戳,這不是OP想要的 – Alfwed
您可以使用正則表達式(^[1-9]{4}-[1-9]{2}-[1-9]{2}$
)與preg_match這一點。
另一種方法是strptime
,它用於將字符串(與某種格式相關聯)轉換爲時間。
這不是exatly你要求什麼(也接受其他日期格式),但將有助於找出日期是否有效:
strtotime($date)
將返回FALSE
如果$date
具有無效的日期格式。
Manual
SOLUTION 1
結合什麼@Alfwed和@JellyBelly中寫道,這裏是我是如何做的:
public function valid_date($inputdate){
$date = $inputdate;
if (strtotime($date)){
if (strpos($date,'/') !== false) {
list($day, $month, $year) = explode('/', $date);
return checkdate($month, $day, $year);
}else{
return false;
}
}else{
return false;
}
}
它會檢查羯羊如果輸入文本(例如:「 adasdsad「),或者它是否具有日期格式(例如:」10/02/1988「),並檢查它是否是有效日期。
如果輸入日期是10-10-1996也是有效格式或10.02.1996,它將不會接受它們,因爲我要求用戶使用帶「/」的格式。只要刪除,如果你不想做這個驗證,就是這樣。
解決方案2
我發現,解決方案1,如果你打算進入一個將來的日期不起作用。所以我不得不尋找另一種解決方案。那就是:
public function valid_date($date, $format = 'd/m/Y'){
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) == $date;
}
這不是我的,發現它在:link
- 1. 檢查日期列表是否包含特定日期
- 2. 如何檢查日期是否被python中的另一個日期所包含?
- 3. Java 8日期時間檢查期間是否包含特定日期
- 4. T-SQL如何檢查DataTime是否包含日期字符串?
- 5. 如何檢查字符串是否包含日期?
- 6. 是否可以使用包含日期的變量設置新DateTime的日期?
- 7. 如何檢查日期是否在某個星期或季度
- 8. 如何檢查日期是否大於今天的日期Laravel5
- 9. 如何檢查日期是否在兩個日期之間mysql?
- 10. jquery如何檢查日期是否小於當前日期
- 11. 如何檢查當前日期是否大於結束日期?
- 12. 如何檢查日期是否大於其他日期?
- 13. 如何檢查移動日期是否爲當前日期
- 14. 如何檢查日期是否發生?
- 15. 如何檢查日期是否已過
- 16. Eloquent:檢查日期是否在開始日期和結束日期之間
- 17. MySQL檢查db中的日期是否包含給定日期範圍的日期
- 18. 檢查日期時間字符串是否包含時間
- 19. 檢查一個字符串是否包含日期
- 20. Rails中的日期範圍是否包含邊界日期?
- 21. 如何從包含使用linq或包含日期和名稱的哈希集檢索日期?
- 22. 如果文件包含日期,如何創建日期類別?
- 23. 檢查是否從給定日期的任何日期位於多個日期
- 24. 查詢包含日期
- 25. 將包含日期的字符串變量轉換爲日期變量Stata
- 26. 如何檢查變量是否包含特定文本
- 27. Java檢查日期是否是下一個星期日
- 28. 如何檢查今天是否是Java日曆的星期日
- 29. 查找字符串中是否包含日期和時間
- 30. 檢查變量數據是否返回日期對象
你爲什麼要限制自己的格式「2011-09-20」? '20-09-2011'有什麼問題?來自美國以外的國家,我可以告訴你,因爲我使用的日期格式不是美國使用的格式,所以出現錯誤非常令人沮喪。 strtotime()接受所有的日期格式,請不要毀掉你的軟件;) –
我也在美國以外。但是我使用的產品來自美國。 – EnexoOnoma
我添加一個演示:http://stackoverflow.com/questions/7645094/how-to-check-if-a-variable-contains-a-date-or-a-date-and-text/7645146#7645146 – JellyBelly