ホームページ >バックエンド開発 >PHPチュートリアル >phpは、指定された日付間の各週と月の開始時刻と終了時刻を取得します。php date_PHPチュートリアル

phpは、指定された日付間の各週と月の開始時刻と終了時刻を取得します。php date_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:13:061010ブラウズ

phpは、指定された日付の間の各週と月の開始時刻と終了時刻を取得します、php date

前後2つの日付を指定して、その間の各週の開始時刻と終了時刻、および各月の開始時刻と終了時刻を計算します

ログフォーマットクラスDate.class.php

コードをコピーします コードは次のとおりです:

クラスDatefmt{
   関数 __construct() {}
  /**
* 指定した日付に基づいて週の開始時刻と終了時刻を取得します
​*/
  パブリック関数 get_weekinfo_by_date($date) {
    $idx = strftime("%u", strtotime($date));
    $mon_idx = $idx - 1;
    $sun_idx = $idx - 7;
    配列を返します(
      'week_start_day' => strftime('%Y-%m-%d', strtotime($date) - $mon_idx * 86400),
      'week_end_day' => strftime('%Y-%m-%d', strtotime($date) - $sun_idx * 86400),
      );
  }
  /**
* 指定した日付に基づいて月の開始時刻と終了時刻を取得します
​*/
  パブリック関数 get_monthinfo_by_date($date){
    $ret = array();
    $timestamp = strtotime($date);
    $mdays = date('t', $timestamp);
    配列を返します(
      'month_start_day' => date('Y-m-1', $timestamp),
      'month_end_day' => date('Y-m-'.$mdays, $timestamp)
      );
  }
  /**
* 指定した日付の間の週を取得します
​*/
  パブリック関数 get_weeks($sdate, $edate) {
    $range_arr = array();
    // 检查日期有效性
    $this->check_date(array($sdate, $edate));
    // 各周の開始時間を計算します
    やります{
      $weekinfo = $this->get_weekinfo_by_date($sdate);
      $end_day = $weekinfo['week_end_day'];
       $start = $this->substr_date($weekinfo['week_start_day']);
      $end = $this->substr_date($weekinfo['week_end_day']);
      $range = "{$start} ~ {$end}";
      $range_arr[] = $range;
       $sdate = date('Y-m-d', strtotime($sdate)+7*86400);
    }while($end_day < $edate);
    $range_arr を返します;
  }
  /**
* 指定した日付の間の毎月を取得します
​*/
  パブリック関数 get_months($sdate, $edate) {
    $range_arr = array();
    やります{
      $monthinfo = $this->get_monthinfo_by_date($sdate);
      $end_day = $monthinfo['month_end_day'];
       $start = $this->substr_date($monthinfo['month_start_day']);
      $end = $this->substr_date($monthinfo['month_end_day']);
      $range = "{$start} ~ {$end}";
      $range_arr[] = $range;
       $sdate = date('Y-m-d', strtotime($sdate.'+1 month'));
    }while($end_day < $edate);
    $range_arr を返します;
  }
  /**
* 傍受された日付の月日
* @param string $date
* @return string $date
​*/
  パブリック関数 substr_date($date) {
    if ( ! $date) は FALSE;
を返します     return date('m-d', strtotime($date));
  }
  /**
* 日付の有効性を確認 YYYY-mm-dd
* @param 配列 $date_arr
* @return boolean
​*/
  パブリック関数 check_date($date_arr) {
    $invalid_date_arr = array();
    foreach ($date_arr as $row) {
      $timestamp = strtotime($row);
      $standard = date('Y-m-d', $timestamp);
      if ($standard != $row) $invalid_date_arr[] = $row;
    }
    if ( ! empty($invalid_date_arr)) {
      die("無効な日付 -> ".print_r($invalid_date_arr, TRUE));
    }
  }
}

クラスファイルの使用

复制代価代価如下:

require_once "Datefmt.class.php";
$datefmt = 新しい Datefmt();
// 11 月 1 日から 30 日までの週を出力します
var_dump($datefmt->get_weeks('2014-11-05', '2014-11-29'));
/*結果は
配列(4) {
[0]=>
文字列(13)「11-03~11-09」
[1]=>
文字列(13)「11-10~11-16」
[2]=>
文字列(13)「11-17~11-23」
[3]=>
文字列(13)「11-24~11-30」
}
*/
// 2月1日と11月30日を出力します
var_dump($datefmt->get_months('2014-02-03', '2014-11-29'));
/*結果は
配列(10) {
[0]=>
文字列(13) "02-01 ~ 02-28"
[1]=>
文字列(13) "03-01 ~ 03-31"
[2]=>
文字列(13) "04-01 ~ 04-30"
[3]=>
文字列(13)「05-01~05-31」
[4]=>
文字列(13) "06-01 ~ 06-30"
[5]=>
文字列(13) "07-01 ~ 07-31"
[6]=>
文字列(13) "08-01 ~ 08-31"
[7]=>
文字列(13) "09-01 ~ 09-30"
[8]=>
文字列(13)「10-01~10-31」
[9]=>
文字列(13)「11-01~11-30」
}
*/

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/917042.html技術記事 PHP は、指定された 2 つの日付間の各週と各月の開始時刻と終了時刻を取得します。PHP date は、指定された 2 つの日付に基づいて、2 つの日付間の各週の開始時刻と終了時刻を計算します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。