PHP中时间的相关算法

1.PHP中计算一个时间段中有多少天:

$start = ‘2018-10-16’;
$end = ‘2019-1-23’;
time=strtotime($end) - strtotime($start);
$day = $time/(3600*24);
echo $day; //99

2.指定时间段中的所有时间

function getDateFromRange($startDate, $endDate)
{
    $sTimestamp = strtotime($startDate);
    $eTimestamp = strtotime($endDate);
    // 计算日期段内有多少天
    $days = ($eTimestamp - $sTimestamp) / 86400 + 1;
    // 保存每天日期
    $date = array();
    for ($i = 0; $i < $days; $i++) {
        $date[] = date('Y-m-d', $sTimestamp + (86400 * $i));
    }
    return $date;
}
 echo getDateFromRange('2018-12-20','2019-1-26'); //结果是包括起始时间内的所有时间

3.时间段去掉 周六 周日

  function removeWeek($start,$end)
{
    $time = [];
    $timeRange = self::getDateFromRange($start,$end);
    foreach ($timeRange as $k=>$v){
        $date = strtotime($v);
        if(date('w', $date)!=0 && date('w', $date) != 6){
            $time[$k] = $v;
        }
    }
   return $time;
}
echo removeWeek('2018-12-20','2019-1-26');  //结果是去掉每周的周六和周日的所有时间,包括起始时间

4.指定天的周一和周天

  function getWeek($day){
    $week = [];
    $lastday = date('Y-m-d', strtotime("$day Sunday"));
    $firstday = date('Y-m-d', strtotime("$lastday -6 days"));
    return $week[] = ['firstday' => $firstday, 'lastday' => $lastday];
    }
  echo   getWeek('2018-12-26');   // array('firstday'=>'2018-12-24','lastday'=>'2018-12-30')

5.指定天的当月第一天和月最后一天

function getmonths($day){
    $month = [];
    $firstday = date('Y-m-01', strtotime($day));
    $lastday = date('Y-m-d', strtotime("$firstday +1 month -1 day"));
    return $month[] = ['firstday' => $firstday, 'lastday' => $lastday]
}
  echo   getWeek('2018-12-26');   // array('firstday'=>'2018-12-01','lastday'=>'2018-12-31')

猜你喜欢

转载自blog.csdn.net/misslee123456/article/details/86604806