ホームページ バックエンド開発 PHPチュートリアル PHP は、特定の期間が何週間あるか、および特定の時期が年の何週目であるかを計算します。

PHP は、特定の期間が何週間あるか、および特定の時期が年の何週目であるかを計算します。

Jun 20, 2016 pm 01:03 PM
秒読み

特定の期間に何週間あるか、および特定の期間が年間何週目であるかを計算する PHP 関数

date_default_timezone_set('PRC');
function count_weeks($startDate, $endDate = ''){
  //开始时间
  $startDate = date('Y-m-d', $startDate);
  //结束时间
  if(empty($endDate)) {
    $endDate = date('Y-m-d');
  }else{
    $endDate = date('Y-m-d', $endDate);
  }
  //跨越天数
  $n = (strtotime($endDate)-strtotime($startDate))/86400;
  //判断,跨度小于7天,可能是同一周,也可能是两周
  $endDate = date("Y-m-d",strtotime("$endDate +1 day"));
  if($n<7){
      //查开始时间 在 那周 的 位置
      $day            = date("w",strtotime($startDate))-1;
      //查开始时间  那周 的 周一
      $week_start        = date("Y-m-d",strtotime("$startDate -{$day} day"));
      //查开始时间  那周 的 周末
      $day            = 7-$day;
      $week_end        = date("Y-m-d",strtotime("$startDate +{$day} day"));
      //判断周末时间是否大于时间段的结束时间,如果大于,那就是时间段在同一周,否则时间段跨两周
      if($week_end>=$endDate){        
          $weekList[] =array('s'=>$startDate, 'e'=>date("Y-m-d",strtotime("$endDate -1 day")));
      }else{
          $weekList[] =array('s'=>$startDate, 'e'=>date("Y-m-d",strtotime("$week_end -1 day")));        
          $weekList[] =array('s'=>$week_end, 'e'=>date("Y-m-d",strtotime("$endDate -1 day")));    
      }
  }else{
      //如果跨度大于等于7天,可能是刚好1周或跨2周或跨N周,先找出开始时间 在 那周 的 位置和那周的周末时间
      $day         = date("w",strtotime($startDate))-1;
      $week_start  = date("Y-m-d",strtotime("$startDate -{$day} day"));
      $day         = 7-$day;
      $week_end    = date("Y-m-d",strtotime("$startDate +{$day} day"));
      //先把开始时间那周写入数组
      $weekList[]  =array('s'=>$startDate, 'e'=>date("Y-m-d",strtotime("$week_end -1 day"))); 
      //判断周末是否大于等于结束时间,不管大于(2周)还是等于(1周),结束时间都是时间段的结束时间。
      if($week_end >= $endDate){
          $weekList[] = array('s'=>$week_end, 'e'=>date("Y-m-d",strtotime("$endDate -1 day")));
      }else{
         //N周的情况用while循环一下,然后写入数组
          while($week_end <= $endDate){
              $start         = $week_end;
              $week_end    = date("Y-m-d",strtotime("$week_end +7 day"));
              if($week_end <= $endDate){
                  $weekList[]  = array('s'=>$start, 'e'=>date("Y-m-d",strtotime("$week_end -1 day")));
              }else{
                  $weekList[]  = array('s'=>$start, 'e'=>date("Y-m-d",strtotime("$endDate -1 day")));
              }
          }
      }
  }
  return $weekList;
}
ログイン後にコピー

特定の期間の年間の週を取得する PHP メソッド

date('W')
ログイン後にコピー


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Vue を使用してボタンのカウントダウン効果を実装する方法 Vue を使用してボタンのカウントダウン効果を実装する方法 Sep 21, 2023 pm 02:03 PM

Vue を使用してボタンのカウントダウン効果を実装する方法

C++ で簡単なカウントダウン プログラムを作成するにはどうすればよいですか? C++ で簡単なカウントダウン プログラムを作成するにはどうすればよいですか? Nov 03, 2023 pm 01:39 PM

C++ で簡単なカウントダウン プログラムを作成するにはどうすればよいですか?

Win10 起動時の 10 秒カウントダウンをキャンセルするには? Win10 起動時のカウントダウンをキャンセルする 3 つの方法 Win10 起動時の 10 秒カウントダウンをキャンセルするには? Win10 起動時のカウントダウンをキャンセルする 3 つの方法 Feb 29, 2024 pm 07:25 PM

Win10 起動時の 10 秒カウントダウンをキャンセルするには? Win10 起動時のカウントダウンをキャンセルする 3 つの方法

CSS を使用してカウントダウン効果を作成する方法 CSS を使用してカウントダウン効果を作成する方法 Oct 26, 2023 am 10:36 AM

CSS を使用してカウントダウン効果を作成する方法

JavaScript に基づいた Web カウントダウン アプリケーションの開発 JavaScript に基づいた Web カウントダウン アプリケーションの開発 Aug 08, 2023 am 09:55 AM

JavaScript に基づいた Web カウントダウン アプリケーションの開発

uniappでタイマーを使用してページカウントダウン効果を実現する方法 uniappでタイマーを使用してページカウントダウン効果を実現する方法 Oct 18, 2023 am 11:18 AM

uniappでタイマーを使用してページカウントダウン効果を実現する方法

Vue を使用して検証コードのカウントダウン効果を実装する方法 Vue を使用して検証コードのカウントダウン効果を実装する方法 Sep 19, 2023 am 11:36 AM

Vue を使用して検証コードのカウントダウン効果を実装する方法

uniappでカウントダウンと目覚まし時計機能を実装する方法 uniappでカウントダウンと目覚まし時計機能を実装する方法 Oct 20, 2023 pm 06:36 PM

uniappでカウントダウンと目覚まし時計機能を実装する方法

See all articles