[英]Php, how to determine if a string is a time?
我想檢測一個字符串是否是一個時間( 00:18:31 )。 我知道strtotime()
但它也檢測到“ now
”為 OK,依此類推。 我需要一個真正的解決方案。
嘗試這個:-
if (DateTime::createFromFormat('H:i:s', $yourtimeString) !== FALSE) {
echo "it's a date";
}else{
echo "it's not a date";
}
輸入:- 00:18:31 輸出:- 這是一個日期
輸入:- now,NOW,now(),NOW() 輸出:- 這不是日期
validateTime()
函數檢查給定的字符串是否是有效時間。 使用DateTime
類和createFromFormat()
靜態方法。
function validateTime($time, $format = 'H:i:s'){
$t = DateTime::createFromFormat($format, $time);
return $t && $t->format($format) === $time;
}
// Returns true
echo var_dump(validateTime("00:18:31"));
echo var_dump(validateTime("23:59:59"));
echo var_dump(validateTime("00:02:30"));
// Returns false
echo var_dump(validateTime("31:18:31"));
echo var_dump(validateTime("24:00:00"));
echo var_dump(validateTime("23:60:60"));
$t->format($format) === $time
是檢查時間是否確實是真實時間的測試。 例如23:59:59是有效時間,但24:00:00不是。
我們都知道23:59:59是人類可接受的最大時間。 24:00:00不是。 但是,我們可以假設它表示第二天的00:00:00 。 這就是DateTime::createFromFormat
所做的! 當我們給它一個時間超過最大值。 它通過將剩余時間添加到第二天來接受它。
比如今天是2021年5月14日23:59:59和時間來檢查,如果我們給它createFromFormat
是24:02:30日期變成2021年5月15日0時02分30秒第二天
我們注意到24:02:30 != 00:02:30
。 因此,我們可以總結出無效時間。 要有效,它必須相同!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.