1. php的時間正則表達式
最簡單的正則 如 : \d{4}-\d{2}-\d{2}
但是實際情況卻不是那麼簡單,,要考慮,有效性和閏年等問題.....
對於日期的有效范圍,不同的應用場景會有所不同。MSDN中定義的DateTime對象的有效范圍是:0001-01-01 00:00:00到9999-12-31 23:59:59。
UNIX時間戳的0按照ISO 8601規范為 :1970-01-01T00:00:00Z。
先考慮與年份無關的前三條規則,年份可統一寫作
(?!0000)[0-9]{4}
下面僅考慮月和日的正則
1. 包括平年在內的所有年份的月份都包含1-28日
(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])
2. 包括平年在內的所有年份除2月外都包含29和30日
(0[13-9]|1[0-2])-(29|30)
3. 包括平年在內的所有年份1、3、5、7、8、10、12月都包含31日
(0[13578]|1[02])-31)
合起來就是除閏年的2月29日外的其它所有日期
(?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)
接下來考慮閏年的實現
1 : 四年一閏
([0-9]{2}(0[48]|[2468][048]|[13579][26])
2 : 百年不閏,四百年再閏
(0[48]|[2468][048]|[13579][26])00
3 : 合起來就是所有閏年的2月29日
([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)
四條規則都已實現,且互相間沒有影響,合起來就是所有符合DateTime范圍的日期的正則
^((?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$
考慮到這個正則表達式僅僅是用作驗證,所以捕獲組沒有意義,只會佔用資源,影響匹配效率,所以可以使用非捕獲組來進行優化。
^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$
2. php按時分時間段判斷語句
臨時寫了一段,你看看,
<?php
date_default_timezone_set('PRC');//設置時區,其中PRC為「中華人民共和國」
$j=date("H:i");獲得當前小時和分鍾的時間
$h=strtotime($j);//獲得當前小時和分鍾的時間時間戳
$z=strtotime('00:00');//獲得指定分鍾時間戳,00:00
$x=strtotime('00:29');//獲得指定分鍾時間戳,00:29
if($h>$z&&$z<$x){
echo'顯示時間是00:00到00:29分之間';
}
?>
3. php 日期提交後怎麼判斷這個日期格式是否正確
1、首先PHP中可以獲取當前時間戳,利用time()函數,並且不需要參數,直接返回當前日期時間,如下圖所示。
4. PHP 怎麼樣判斷輸入的是否是日期格式
bool checkdate ( int month, int day, int year )
如果給出的日期有效則返回 TRUE,否則返回 FALSE。檢查由參數構成的日期的合法性。日期在以下情況下被認為有效:
year 的值是從 1 到 32767
month 的值是從 1 到 12
Day 的值在給定的 month 所應該具有的天數范圍之內,閏年已經考慮進去了。
int strtotime ( string time [, int now] )
本函數預期接受一個包含美國英語日期格式的字元串並嘗試將其解析為 Unix 時間戳(自 January 1 1970 00:00:00 GMT 起的秒數)
例子:
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
如果不行 你自己寫 正則表達式。
5. PHP 判斷是否為時間戳格式
時間戳其實就是整數,用is_int來檢測,另外目前的時間戳大概是10數字,其實這么判定還是不太科學,你應該吧獲得時間戳看她是大於1970GMT的時間戳,並且是整數,這樣稍微嚴謹點
6. PHP怎麼判斷時間
在php 中判斷 需要獲取前台提交的日期,轉換為時間戳 , 和系統時間相減 差值小於7天的 不刪除
<?
$meeting=$_POST['meeting'];//獲取前台提交來的時間字串
$meeting_time=strtotime($meeting);轉事件戳
if(time()-$meeting_time<7*3600*24)//時間為秒數
{
echo"小於7天";
return
}
7. 求助:PHP怎麼判斷不同時間格式的日期為同一天
<?php
$date="2018-06-06";
$v=array('date'=>'2018-6-6');
//把不同格式的時間轉換成同一標准時間格式
$date1=strtotime($date);
$date2=strtotime($v['date']);
//轉換成相同的年月日格式(精確到日)(string)
$date1=date('Y-m-d',$date1);
$date2=date('Y-m-d',$date2);
//比較
if($date1==$date2){
//code...
}
?>
8. php 判斷日期格式是否正確
$data='2014-11-11';//這里可以任意格式,因為strtotime函數很強大
$is_date=strtotime($data)?strtotime($data):false;
if($is_date===false){
exit('日期格式非法');
}else{
echodate('Y-m-d',$is_date);//只要提交的是合法的日期,這里都統一成2014-11-11格式
}
9. php時間段驗證
可以這么寫:
<?php
$date=date("Y-m-dH",time());
$start=strtotime($date);//開始的時間
$end=$start+3600;//結束的時間
$uid=$_SESSION['uid'];//獲取用戶的id
//查詢是否抽獎過,uid為當前用戶,時間在一個小時的時間段內
$sql="SELECT*FROMyour_tableWHEREuid=$uidANDtime>=".$start."ANDtime<=".$end;
//TODO::根據sql查詢是否在時間段內抽獎過,如果抽獎了,返回false,沒抽獎則顯示抽獎結果即可
?>