① 比較時間段一與時間段二是否有交集的php函數
步驟一:先看一下哪個時間端的 開始時間 比較早就算是A時間,另一個是B時間
步驟二:比較下 A時間的結束時間(C) 是不是 晚於B時間的開始時間(D)。就可以知道了。
A:--------==========C--------
B:-----------D===========-------
A:-----===================C--------
B:-----------D===========-------
② PHP編程計算兩個時間段是否有交集的實現方法(不算邊界重疊)
本文實例講述了PHP編程計算兩個時間段是否有交集的實現方法。分享給大家供大家參考,具體如下:
優化前的版本:
/**
*
PHP計算兩個時間段是否有交集(邊界重疊不算)
*
*
@param
string
$beginTime1
開始時間1
*
@param
string
$endTime1
結束時間1
*
@param
string
$beginTime2
開始時間2
*
@param
string
$endTime2
結束時間2
*
@return
bool
*/
function
is_time_cross($beginTime1
=
'',
$endTime1
=
'',
$beginTime2
=
'',
$endTime2
=
'')
{
$status
=
$beginTime2
-
$beginTime1;
if
($status
>
0)
{
$status2
=
$beginTime2
-
$endTime1;
if
($status2
>
0)
{
return
false;
}
elseif
($status2
<
0)
{
return
true;
}
else
{
return
false;
}
}
elseif($status
<
0)
{
$status2
=
$endTime2
-
$beginTime1;
if
($status2
>
0)
{
return
true;
}
else
if
($status2
<
0)
{
return
false;
}
else
{
return
false;
}
}
else
{
$status2
=
$endTime2
-
$beginTime1;
if
($status2
==
0)
{
return
false;
}
else
{
return
true;
}
}
}
優化後的版本(條件合並):
/**
*
PHP計算兩個時間段是否有交集(邊界重疊不算)
*
*
@param
string
$beginTime1
開始時間1
*
@param
string
$endTime1
結束時間1
*
@param
string
$beginTime2
開始時間2
*
@param
string
$endTime2
結束時間2
*
@return
bool
*/
function
is_time_cross($beginTime1
=
'',
$endTime1
=
'',
$beginTime2
=
'',
$endTime2
=
'')
{
$status
=
$beginTime2
-
$beginTime1;
if
($status
>
0)
{
$status2
=
$beginTime2
-
$endTime1;
if
($status2
>=
0)
{
return
false;
}
else
{
return
true;
}
}
else
{
$status2
=
$endTime2
-
$beginTime1;
if
($status2
>
0)
{
return
true;
}
else
{
return
false;
}
}
}
測試:
$beginTime1
=
strtotime('2015-08-07
06:30');
$endTime1
=
strtotime('2015-08-07
08:30');
$beginTime2
=
strtotime('2015-08-07
05:30');
$endTime2
=
strtotime('2015-08-07
06:31');
echo
is_time_cross($beginTime1,
$endTime1,
$beginTime2,
$endTime2);//輸出1
PS:這里再為大家推薦幾款時間及日期相關工具供大家參考使用:
在線日期/天數計算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi
在線日期計算器/相差天數計算器:
http://tools.jb51.net/jisuanqi/datecalc
在線日期天數差計算器:
http://tools.jb51.net/jisuanqi/onlinedatejsq
Unix時間戳(timestamp)轉換工具:
http://tools.jb51.net/code/unixtime
更多關於PHP相關內容感興趣的讀者可查看本站專題:《php日期與時間用法總結》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php面向對象程序設計入門教程》、《PHP網路編程技巧總結》、《php字元串(string)用法總結》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
③ php求一段時間內各周的起始時間和結束時間
function getTimeList($startTime, $endTime, $isWeek=true) {
$result = array();
if(!($st = strtotime($startTime)) || !($et = strtotime($endTime))) return false;
$day = 86400; //一天24*60*60
$sDate = getdate($st);
if($isWeek) {
$result['weekly'] = array();
$nextTime = (6 - $sDate['wday']) * $day + $st;
$currentTime = $st;
while($nextTime < $et) {
$result['weekly'][] = array('weekStart' => gmdate('Y-m-d', $currentTime), 'weekEnd' => gmdate('Y-m-d', $nextTime));
$currentTime = $nextTime + 86400;
$nextTime = $nextTime + 604800;//7天*24小時*60分*60秒
}
$result['weekly'][] = array('weekStart' => gmdate('Y-m-d', $currentTime), 'weekEnd' => $endTime);
} else {
$result['monthly'] = array();
$currentMonth = $st;
$m = $sDate['mon'];
$year = $sDate['year'];
while($lastMonth < $et) {
if($m == 12) {
$m = 1;
$year = $year + 1;
} else $m++;
$firstDate = strtotime($year."-".$m."-01"); //下月初時間截
$lastMonth = $firstDate - $day;//得到本月末時間截
if($lastMonth > $et) $lastMonth = $et;
$result['monthly'][] = array('monthStart' => gmdate('Y-m-d', $currentMonth), 'monthEnd' => gmdate('Y-m-d', $lastMonth));
$currentMonth = $firstDate;
}
}
return $result;
}
調用:
$w = getTimeList('2013-05-02', '2013-08-06');
print_r($w);
echo '<p/>';
$m = getTimeList('2013-05-02', '2014-03-06', false);
print_r($m);
測試OK,你看看是不是你想要的吧
④ 如何寫PHP 判斷當前時間是否大於下午6點
需要准備的材料分別是:電腦、php編輯器、瀏覽器。
1、首先,打開php編輯器,新建php文件,例如:index.php。
⑤ PHP多個時間段交集判斷
沒想到特別好的方法 你可以試試轉化為時間戳(設置同一個日期) 然後把這個數據換成一個二維得 起始時間 為minTime 結束時間為maxTime 然後拿值取比較 我只想到這一個方法
⑥ php中如何查詢指定時間段的數據
下面是時間戳查詢。如果資料庫時間顯示的是 2011-04-05 那就不需要 用 strtotime 時間戳轉換函數:
$timea = strtotime($_POST['timea']);
$timeb = strtotime($_POST['timeb']);
$sq2="select * from `ecs_order_info` where add_time between '$timea' and '$timeb' and `quanxian`='$dangqian' order by `order_id` DESC limit 50";
$sql = mysql_query($sq2);
(6)php時間段分析擴展閱讀
在php中完成
1、UNIX時間戳轉換為日期用函數: date()
一般形式:date('Y-m-d H:i:s', 1156219870);
2、日期轉換為UNIX時間戳用函數:strtotime()
一般形式:strtotime('2010-03-24 08:15:42');
在MySQL中完成
這種方式在MySQL查詢語句中轉換,優點是不佔用PHP解析器的解析時間,速度快,缺點是只能用在資料庫查詢中,有局限性。
1、UNIX時間戳轉換為日期用函數: FROM_UNIXTIME()
一般形式:select FROM_UNIXTIME(1156219870);
2、日期轉換為UNIX時間戳用函數: UNIX_TIMESTAMP()
一般形式:Select UNIX_TIMESTAMP('2006-11-04 12:23:00′);
舉例:mysql查詢當天的記錄數:
$sql=」select * from message Where DATE_FORMAT(FROM_UNIXTIME(chattime),'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d') order by id desc」。