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,没抽奖则显示抽奖结果即可
?>