Maison >développement back-end >tutoriel php >PHP implémente une méthode de programmation pour calculer si deux périodes se croisent

PHP implémente une méthode de programmation pour calculer si deux périodes se croisent

墨辰丷
墨辰丷original
2018-05-22 09:45:351648parcourir

Cet article présente principalement la méthode d'implémentation de la programmation PHP pour calculer si deux périodes de temps se croisent. Combiné avec des exemples spécifiques, il compare et analyse la conversion et la comparaison des périodes de temps PHP et d'autres techniques d'exploitation associées auxquelles les amis dans le besoin peuvent se référer. it

Les détails sont les suivants :

Version pré-optimisée :

/**
 * 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;
    }
  }
}

Version optimisée (fusion conditionnelle ):

/**
 * PHP计算两个时间段是否有交集(边界重叠不算)
 *
 * @param string $beginTime1 开始时间1
 * @param string $endTime1 结束时间1
 * @param string $beginTime2 开始时间2
 * @param string $endTime2 结束时间2
 * @return bool
 */
function is_time_cross($beginTime1 = &#39;&#39;, $endTime1 = &#39;&#39;, $beginTime2 = &#39;&#39;, $endTime2 = &#39;&#39;) {
  $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;
    }
  }
}

Test :

$beginTime1 = strtotime(&#39;2015-08-07 06:30&#39;);
$endTime1 = strtotime(&#39;2015-08-07 08:30&#39;);
$beginTime2 = strtotime(&#39;2015-08-07 05:30&#39;);
$endTime2 = strtotime(&#39;2015-08-07 06:31&#39;);
echo is_time_cross($beginTime1, $endTime1, $beginTime2, $endTime2);//输出1

Recommandations associées :

Explication détaillée des étapes d'optimisation des statistiques de données pour PHP+MySQL dans une période de temps fixe

PHP se combine avec Redis pour limiter le nombre de visites par un utilisateur ou une IP au cours d'une certaine période de temps

Comment PHP calcule-t-il si deux périodes se croisent

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn