皆さん、こんにちは。2 日前に RBAC [ロールベースのアクセス制御] の基本的な考え方を説明しましたが、その原理をすでに理解しているかどうか、そしてそれが使いやすいかどうかはわかりません。プロジェクトの開発中にこれを使用すると、上記で作成した RBAC クラスがプロジェクト開発に実際に適しているとは限りません。このクラスを作成する目的は、作業を理解することだけです。 RBAC の原理と使用法をさらに詳しく説明します ...
さて、すでに私が冗長だと思われたかもしれないので、これ以上ナンセンスなことは言いません。今日はそれを説明します。
既知の開始日と既知の終了日に基づいて、PHP の date 関数を使用して出力カレンダーを調べます。
日常生活において、カレンダーは私たちの生活や仕事に密接に関係しており、欠かせないものです。そのため、今日カレンダーについて説明した後、その日に完了するタスクを思い出すために電子カレンダーを作成してみるのも非常に興味深いです。 。
さて、まず date 関数について学びましょう。date 関数が現在の年、月、日を取得できることは皆さん知っていますが、date 関数の機能はこれに限定されません。公式の PHP マニュアルでパラメータを確認してみましょう。
フォーマット文字の説明戻り値の例
日 --- ---
d 日付、先頭にゼロを付けた 01 から 31 までの 2 桁の数字
D 曜日、テキスト表現、月曜から日曜までの 3 文字
j 月の日、先頭のゼロなし 1 ~ 31
l (「L」の小文字) 曜日、完全なテキスト形式 日曜日から土曜日まで
N ISO-8601 形式の数字で表される曜日 (PHP 5.1.0 で新たに追加) 1 (月曜日を意味します) ~ 7 (日曜日を意味します)
S 月の日の後の英語の接尾辞、2 文字 st、nd、rd、または th。 j
と一緒に使用できます
w 曜日、数字は0(日曜日を意味します)から6(土曜日を意味します)を表します
z 西暦 0 から 366 まで
日曜日 --- ---
W ISO-8601 形式の年の週番号。各週は月曜日から始まります (PHP 4.1.0 で新たに追加されました) 例: 42 (年の 42 番目の週)
月 --- ---
F 月、完全なテキスト形式 (1 月または 3 月など) 1 月から 12 月まで
m 先頭にゼロを付けた数字で表される月 (01 から 12)
M は 1 月から 12 月までの 3 文字の略称です
n 月は先頭のゼロなしの数字で表されます 1 ~ 12
t 特定の月の日数 28 から 31 まで
年 --- ---
L うるう年ですか? うるう年なら1、そうでなければ0です
o ISO-8601 形式の年番号。これは Y と同じ値ですが、ISO 週番号 (W) が前年または翌年に属している場合は、その年が使用されます。 (PHP 5.1.0 の新機能) 例: 1999 または 2003
Y 4 桁の完全な年 例: 1999 または 2003
y 2 桁で表される年 例: 99 または 03
時間 --- ---
a 小文字の午前と午後の値 am または pm
大文字の午前と午後の値は AM または PM です
B スウォッチインターネット標準時間 000 ~ 999
g 時間、12 時間形式、先頭のゼロなし 1 ~ 12
G 時間、24 時間形式、先頭のゼロなし 0 ~ 23
h 時間、12 時間形式、先頭に 01 から 12 が付きます
H 時間、24 時間形式、先頭に 00 から 23 が付きます
i 先頭にゼロを付けた分 00 ~ 59>
s 秒、先頭にゼロ 00 ~ 59>
タイムゾーン --- ---
e タイムゾーン識別子 (PHP 5.1.0 で新たに追加) 例: UTC、GMT、大西洋/アゾレス諸島
I 夏時間かどうか。夏時間の場合は 1、それ以外の場合は 0 です
O グリニッジ標準時との時差 例: +0200
P とグリニッジ標準時 (GMT) の違い、時と分を区切るコロンがあります (PHP 5.1.3 で新たに追加されました) 例: +02:00
T このマシンが設置されているタイムゾーン 例: EST、MDT ([翻訳者注] Windows では「東部標準時」などの完全なテキスト形式ですが、中国語版では「中国標準時」と表示されます)。
Z 時差オフセット (秒単位)。 UTC より西のタイム ゾーン オフセットは常に負であり、UTC より東のタイム ゾーン オフセットは常に正です。 -43200から43200
完了日時 --- ---
c ISO 8601 形式の日付 (PHP 5 で新たに追加) 2004-02-12T15:19:21+00:00
r RFC 822 形式の日付 例: Thu, 21 Dec 2000 16:01:07 +0200
U Unix エポック (1970 年 1 月 1 日 00:00:00 GMT) からの秒数
ご覧のとおり、PHP の date 関数は万能なので、date 関数を使用してカレンダーを作成してみましょう:
/*+----------------------------------------------- ----------------------------------------------------+
| カレンダー
+------------------------------------------------ ----------------------------------------+
| Copyright ランプ兄弟
+------------------------------------------------ ----------------------------------------+
| 著者: 李潔 (lijie@li-jie.me)
| 最終更新日: 2012-05-9 12:30
+------------------------------------------------ ----------------------------------------+
*/
クラス LampDate{
private $start_year // 開始年
private $start_month // 開始月
private $start_day //開始日
private $end_year //年末
private $end_month //月末
private $end_day //終了日
private $start_time; //開始時刻のタイムスタンプ
private $end_time; //終了時刻のタイムスタンプ
//週次テーブルのヘッダー配列を定義します
private $week = array("月曜日","火曜日","水曜日","木曜日","金曜日","土曜日","日曜日");
//開始時刻の始まりのタイムスタンプ
プライベート $start;
// 開始時刻と月末のタイムスタンプ
プライベート $end;
//スタイルシートCSSファイルパス
プライベート $CSS;
//JSイベントファイルのパス
プライベート $script;
/**
* カレンダークラスの構築方法
* @param start_year 開始年
* @param start_month 開始月
* @param start_day 開始日
* @param end_year 年末
* @param end_month 月末月
* @param end_day 終了日
* @param CSS 出力日付スタイル
* @paramスクリプト 出力日イベント
*/
public function __construct($start_year='2012',$start_month='1',$start_day='1',$end_year='2012',$end_month='12',$end_day='31',$css=' style.css',$script='js.js'){
$this->start_year = $start_year //開始年に値を割り当てます
$this->start_month = $start_month //開始月に値を割り当てます
;
$this->start_day = $start_day //開始日に値を代入します
$this->end_year = $end_year //終了年に値を代入します
$this->end_month = $end_month //終了月に値を割り当てます
;
$this->end_day = $end_day //終了日に値を代入します
$this->css = $css; //指定された日付のCSS
$this->script = $script //指定された日付の JS イベント
//開始日のタイムスタンプを取得します
$this->start_time = strtotime($this->start_year."-".$this->start_month."-".$this->start_day);
//終了日のタイムスタンプを取得します
$this->end_time = strtotime($this->end_year."-".$this->end_month."-".$this->end_day);
//開始時刻の先頭のタイムスタンプを取得します
$this->start = strtotime($this->start_year."-".$this->start_month."-01");
// 月の開始時刻と月末のタイムスタンプを取得します
$this->end = strtotime($this->end_year."-".$this->end_month."-".date("t",$this->end_time));
//開始日から終了日までの日数を取得します
$this->day_count = (($this->end)-($this->start))/(24*60*60);
}
/**
* 月次テーブルのヘッダーを取得します
* @param i 月の初めからの日数
* @return テーブルヘッダーに戻ります --年--月
*/
プライベート関数 get_caption($i){
//空の文字列を定義します
$str ='';
$str.= "
".$this->week[$w]; if($w==5 || $w==6){ //土曜日または日曜日の場合は、小さな休日アイコンを追加します $str.= " | ";|||||
"; | "; | "; //開始時刻からi日目が終了日の場合、背景色#EE6363でテーブルを出力 }elseif(date("Ymd",$this->start+($i*(24*60*60)))==$this->end_year.$this->end_month.$this->end_day ){ $str.= " | "; //開始時刻からi日目が現在の日付の場合、背景色#EE2C2Cでテーブルを出力します }elseif(date("ymd",$this->start+($i*(24*60*60)))==(date("ymd",time())){ $str.= " | "; //それ以外の場合は、背景色なしでテーブルを出力します }その他{ $str.= " | "; } //月初めからi日目の日付を出力します $str.= date("j",$this->start+($i*(24*60*60))); $str.= " | ";
"; |
さらに完全なコメントを追加しました。何かわからない場合は、返信を残して質問することもできます。次の投稿で、誰もが遭遇する一般的な問題について詳しく説明します。お楽しみに。
ダウンロードして勉強できるようにコードを投稿します:
カレンダーコード date_class.rarhttp://bbs.lampbrother.net/job.php?action=download&aid=21095
作者 zdrjlamp
。