検索
ホームページバックエンド開発PHPチュートリアルPHPのカレンダー拡張機能とは何ですか?使い方?

Calendar は日付カレンダーの拡張機能のセットです。PHP でこの Calendar 拡張機能を使用するにはどうすればよいですか?この記事では、カレンダー拡張機能のインストール方法と使い方を紹介します。

PHPのカレンダー拡張機能とは何ですか?使い方?

Calendar は日付カレンダーの拡張機能のセットですが、私たちにとっては太陰暦に関連する操作がありません。そのため、私たち中国人にとって、この拡張機能は機能しません。実際の効果しかし、だからといってそれを理解して学ぶことが妨げられるわけではありません。

日付カレンダー型

通常の状況での日付操作では、PHP はデフォルトで UTC 時間を使用します。これは、我が国の国際標準時間です。 , 北京時間の東 8 区を表すには、標準 UTC 時間に 8 を加算する必要があります。もちろん、php.ini またはデータベース内のタイム ゾーン関連のパラメーターを直接変更して、日付とタイム ゾーンを定義することもできます。

標準タイム ゾーンは、グレゴリオ暦に対応します。それは、現在私たちが最も一般的に使用しているグレゴリオ暦と太陽暦の日付です。この標準のグレゴリオ暦に加えて、カレンダー拡張機能はユダヤ暦、フランス暦、および別の非常に有名なユリウス暦もサポートしています。私たちのグレゴリオ暦はユリウス暦から進化しました。それらの間の違いは大きくありませんが、ユダヤ暦とフランス暦の間の違いは比較的大きいです。次のコードでは、さまざまな暦の違いを確認します。

これらの暦の具体的な内容については、ご自身で関連情報を確認することができるほか、なぜユリウス暦が廃止されグレゴリオ暦に変更されたのかなど、興味深い歴史的知識を学ぶこともできます。カレンダー。また、なぜフランスの暦の年は短いのに、ユダヤの暦の年はとても記憶に残るのでしょうか?フランス暦とユダヤ暦の月の名前の由来は、どれもとても興味深い話です。

カレンダー拡張機能のインストールとカレンダー情報の表示

カレンダー拡張機能は PHP インストール パッケージに統合されているため、個別にインストールする必要はありません。カレンダー関連の関数を使用できない場合は、PHP を再コンパイルして --enable-calendar パラメーターを追加できます。

次に指定する暦の詳細ですが、ここではユダヤ暦を指定しています。

$info = cal_info(2);
print_r($info);
// Array
// (
//     [months] => Array
//         (
//             [1] => Tishri
//             [2] => Heshvan
//             [3] => Kislev
//             [4] => Tevet
//             [5] => Shevat
//             [6] => Adar I
//             [7] => Adar II
//             [8] => Nisan
//             [9] => Iyyar
//             [10] => Sivan
//             [11] => Tammuz
//             [12] => Av
//             [13] => Elul
//         )
//     [abbrevmonths] => Array
//         (
//             [1] => Tishri
//             [2] => Heshvan
//             [3] => Kislev
//             [4] => Tevet
//             [5] => Shevat
//             [6] => Adar I
//             [7] => Adar II
//             [8] => Nisan
//             [9] => Iyyar
//             [10] => Sivan
//             [11] => Tammuz
//             [12] => Av
//             [13] => Elul
//         )
//     [maxdaysinmonth] => 30
//     [calname] => Jewish
//     [calsymbol] => CAL_JEWISH
// )

cal_info() 関数が受け取るパラメータは定数で、CAL_GREGORIAN、CAL_JULIAN、CAL_JEWISH、および CAL_FRENCH です。対応する数値は 0、1、2、および 3 です。このコードでは、CAL_JEWISH 情報を返します。ユダヤ暦の月の名前は、ニサンやティシュリなど、グレゴリオ暦の英語の月の名前とは異なることがわかります。具体的な内容については掘り下げませんが、結局のところ、私たちの日常生活ではこの種のカレンダーにアクセスすることはできません。

他のカレンダーから返された情報を自分で試すことができます。グレゴリオ暦とユリウス暦は同じですが、グレゴリオ暦の月の名前は異なり、これらの名前は非常に興味深いものです。

日付カレンダー変換

まず、カレンダー変換を実行するには、指定された日付をユリウス日カウントに変換する必要があります。この jd カウントは、さまざまなカレンダー間の変換に使用される、Calendar 拡張の中間変数とみなすことができます。

//  转变Unix时间戳为Julian Day计数
$today = unixtojd(mktime(0, 0, 0, 9, 23, 2020));
echo $today, PHP_EOL; // 2459116

unixtojd() 関数を使用して、UNIX タイムスタンプを JD カウントに変換します。次に、2020 年 9 月 23 日がユダヤ暦のどの日に相当するかを見てみましょう。

// 获取当前犹太历时间
print_r(cal_from_jd($today, CAL_JEWISH));
// Array
// (
//     [date] => 1/5/5781
//     [month] => 1
//     [day] => 5
//     [year] => 5781
//     [dow] => 3
//     [abbrevdayname] => Wed
//     [dayname] => Wednesday
//     [abbrevmonth] => Tishri
//     [monthname] => Tishri
// )

返された情報はすでに非常に明確です。今日はユダヤ暦 5781 年 1 月 5 日水曜日です。現在の月はティシュリで、グレゴリオ暦の最初の月、ユダヤ暦では教会暦の7番目の月に相当し、秋の到来を表します。

cal_from_jd()関数は、jd数に基づいて指定されたカレンダーの詳細情報を返す関数です。もう 1 つの cal_to_jd() 関数は、サポートされているカレンダー データを jd カウントに変換します。

echo cal_to_jd(CAL_JEWISH, 1, 5, 5781), PHP_EOL; // 2459116
echo cal_to_jd(CAL_GREGORIAN,9, 23, 2020), PHP_EOL; // 2459116

上記のユダヤ暦によって返される jd カウントは、グレゴリオ暦によって返される jd カウントと一致していることがわかります。

もちろん、jd カウントの日付を UNIX 時間に変換することもできます。

echo date("Y-m-d", jdtounix($today)), PHP_EOL;
// 2020-09-23

cal_from_jd() と cal_to_jd() に加えて、Calendar 拡張機能は日付変換のためのいくつかの簡単な関数も提供しますが、それらは cal_from_jd() 関数が返すのとは異なり、文字列型の日付情報を直接返します。日付の詳細。

// 转变一个Gregorian历法日期到Julian Day计数
$jd = GregorianToJD(9, 23, 2020);

// 转变一个Julian Day计数为Gregorian历法日期
echo jdtogregorian($jd), PHP_EOL; // 9/23/2020
// 转变一个Julian Day计数为Julian历法日期
echo jdtojulian($jd), PHP_EOL; // 9/10/2020
// 转变一个Julian Day计数为犹太历法日期
echo jdtojewish($jd), PHP_EOL; // 1/5/5781
// 转变一个Julian Day计数为unix时间戳
echo jdtounix($jd), PHP_EOL; // 1600819200

$jd = GregorianToJD(9, 23, 1799);
// 转变一个Julian Day计数为French历法日期
echo jdtofrench($jd), PHP_EOL; // 1/1/8

GregorianToJD() メソッドは、グレゴリオ暦の日付を jd カウントにすばやく変換します。 jdtoxxxx の関数は、jd カウントに対応する日付カレンダーの文字列情報を迅速に返します。

暦日は 1792 年 9 月 22 日から 1806 年 9 月 22 日までの期間内の日付のみであることに注意してください。これは第一フランス共和国の設立後に導入され、使用が終了した暦です。 1806年、ナポレオンは1804年に第一次フランス帝国を設立しました。帝国はフランス暦(共和制暦)を廃止し、グレゴリオ暦を全面的に導入した。

特定の月の日数

上記の歴史的知識はどのようにして学びましたか?次に、カレンダー拡張機能についての学習に戻りましょう。

$num = cal_days_in_month(CAL_GREGORIAN, 2, 2020);
echo $num, PHP_EOL; // 29

cal_days_in_month() 函数是返回指定历法月份的天数,比如我们看看 2020 年的 2月 是不是 闰月 就可以用这个函数来实现。

复活节彩蛋

复活节是西方非常重要的一个节日,所以在 Calendar 扩展中就有函数可以直接获得指定年份的复活节日期。关于复活节的计算方式其实还是比较复杂的,手工推算是比较麻烦的,而程序计算就非常方便了。

// 指定年份的复活节时间戳
echo date("M-d-Y", easter_date(2019)), PHP_EOL;        // Apr-21-2019
echo date("M-d-Y", easter_date(2020)), PHP_EOL;        // Apr-12-2020
echo date("M-d-Y", easter_date(2021)), PHP_EOL;        // Apr-04-2021

// 3月21日到复活节之间的天数
echo easter_days(2019), PHP_EOL;        // 31
echo easter_days(2020), PHP_EOL;        // 22
echo easter_days(2021), PHP_EOL;        // 14

easter_date() 函数就是返回指定年份的复活节日期。而 easter_days() 函数则是返回从当年公历的 3月21日 到复活节之间的天数。

复活节是每年春分月圆后的第一个星期日,而春分一般是在3月21日,这就简化为只要计算满月的日期和紧挨的星期日的日期就可以得到每年复活节的具体日期了。这种函数在西方世界的软件开发中会非常常用,其实就像我们需要获取每年春节的具体公历日期一样。

总结

是不是很有意思的一套扩展函数。不过对于我们主要面向国内开发的开发者来说用处确实不大,但笔者在学习这个扩展的时候另外收获了不少历史方面的知识,也算是开了眼界,也不失为一大收获,大家也自己试着玩玩并且查查相关的历史知识吧,说不定你的收获会更多!

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202009/source/10.PHP中非常好玩的Calendar扩展学习.php

参考文档:https://www.php.net/manual/zh/book.calendar.php

推荐学习:《PHP视频教程

以上がPHPのカレンダー拡張機能とは何ですか?使い方?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はweixinで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
セッションを保存するためにデータベースを使用することの利点は何ですか?セッションを保存するためにデータベースを使用することの利点は何ですか?Apr 24, 2025 am 12:16 AM

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでカスタムセッション処理をどのように実装しますか?PHPでカスタムセッション処理をどのように実装しますか?Apr 24, 2025 am 12:16 AM

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

セッションIDとは何ですか?セッションIDとは何ですか?Apr 24, 2025 am 12:13 AM

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

ステートレス環境(APIなど)でセッションをどのように処理しますか?ステートレス環境(APIなど)でセッションをどのように処理しますか?Apr 24, 2025 am 12:12 AM

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?Apr 23, 2025 am 12:16 AM

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?Apr 23, 2025 am 12:13 AM

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

session.gc_maxlifetime構成設定とは何ですか?session.gc_maxlifetime構成設定とは何ですか?Apr 23, 2025 am 12:10 AM

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでセッション名をどのように構成しますか?PHPでセッション名をどのように構成しますか?Apr 23, 2025 am 12:08 AM

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

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

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。