簡體   English   中英

php,如何判斷一個字符串是否為時間?

[英]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和時間來檢查,如果我們給它createFromFormat24:02:30日期變成2021年5月15日0時02分30秒第二天
我們注意到24:02:30 != 00:02:30 因此,我們可以總結出無效時間。 要有效,它必須相同!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM