phpは、指定された日付間の各週と月の開始時刻と終了時刻を取得します。php date_PHPチュートリアル
Jul 13, 2016 am 10:13 AM
php
phpは、指定された日付の間の各週と月の開始時刻と終了時刻を取得します、php date
前後2つの日付を指定して、その間の各週の開始時刻と終了時刻、および各月の開始時刻と終了時刻を計算します
ログフォーマットクラスDate.class.php
コードをコピーします コードは次のとおりです:
<?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));
}
}
}
クラスファイルの使用
复制代価代価如下:
<?php
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」
}
*/
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック
Gmailメールのログイン入り口はどこですか?
7309
9


Java チュートリアル
1623
14


CakePHP チュートリアル
1344
46


Laravel チュートリアル
1259
25


PHP チュートリアル
1207
29



Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法
