Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist die Kalendererweiterung in PHP? Wie benutzt man?

Was ist die Kalendererweiterung in PHP? Wie benutzt man?

青灯夜游
青灯夜游nach vorne
2021-06-28 18:35:103807Durchsuche

Calendar ist eine Reihe von Erweiterungen für Datumskalender. Wie verwende ich diese Kalendererweiterung in PHP? In diesem Artikel erfahren Sie, wie Sie die Kalendererweiterung installieren und verwenden.

Was ist die Kalendererweiterung in PHP? Wie benutzt man?

Calendar ist eine Reihe von Erweiterungen für den Datumskalender, aber für uns gibt es keine Operationen im Zusammenhang mit dem Mondkalender, sodass diese Erweiterung für uns Chinesen keine praktische Wirkung hat. Dies hindert uns jedoch nicht daran, es zu verstehen und zu lernen.

Datumskalendertyp

Für Datumsoperationen verwendet PHP standardmäßig die UTC-Zeit, die für unser Land die Standard-UTC-Zeit ist East Eighth District, Pekinger Zeit. Natürlich können Sie die auf die Zeitzone bezogenen Parameter auch direkt in php.ini oder der Datenbank ändern, um Datum und Zeitzone zu definieren.

Die Standardzeitzone entspricht eigentlich dem gregorianischen Zeitkalender. Das sind die Termine des Gregorianischen Kalenders und des Sonnenkalenders, die wir heute am häufigsten verwenden. Zusätzlich zum standardmäßigen gregorianischen Kalender unterstützt die Kalendererweiterung auch den jüdischen Kalender, den französischen Kalender und einen weiteren sehr berühmten julianischen Kalender. Unser gregorianischer Kalender hat sich aus dem julianischen Kalender entwickelt. Der Unterschied zwischen ihnen ist jedoch relativ groß. Im folgenden Code werden wir die Unterschiede zwischen verschiedenen Kalendern sehen.

Für den spezifischen Inhalt dieser Kalender können Sie die relevanten Informationen selbst überprüfen und auch einige interessante historische Erkenntnisse erfahren, z. B. warum der julianische Kalender aufgegeben und der gregorianische Kalender in den gregorianischen Kalender geändert wurde. Und warum sind die Jahre im französischen Kalender nur kurz und warum sind die Jahre im jüdischen Kalender so denkwürdig? Die Ursprünge der Monatsnamen im französischen Kalender und im jüdischen Kalender sind allesamt sehr interessante Geschichten.

Installation der Kalendererweiterung und Anzeige von Kalenderinformationen

Die Kalendererweiterung wurde in das PHP-Installationspaket integriert und muss nicht separat installiert werden. Wenn Sie kalenderbezogene Funktionen nicht verwenden können, können Sie PHP neu kompilieren und den Parameter --enable-calendar hinzufügen.

Als nächstes schauen wir uns die Details des angegebenen Kalenders an. Hier spezifizieren wir den jüdischen Kalender. Der von der Funktion

$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() empfangene Parameter ist eine Konstante, nämlich CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH und CAL_FRENCH. Ihre entsprechenden Zahlen sind 0, 1, 2 und 3. In diesem Code geben wir die CAL_JEWISH-Informationen zurück. Es ist zu erkennen, dass sich die Namen der Monate im jüdischen Kalender von den englischen Namen im gregorianischen Kalender unterscheiden. Es gibt beispielsweise Nisan und Tischri. Ich werde nicht näher auf den konkreten Inhalt eingehen. Schließlich haben wir in unserem täglichen Leben keinen Zugriff auf diese Art von Kalender.

Sie können die von anderen Kalendern zurückgegebenen Informationen selbst ausprobieren. Der Gregorianische Kalender und der Julianische Kalender sind gleich, aber die Namen der Monate im Gregorianischen Kalender sind unterschiedlich und diese Namen sind sehr interessant.

Datumskalenderkonvertierung

Um die Kalenderkonvertierung durchzuführen, müssen wir zunächst das angegebene Datum in die Anzahl der Julianischen Tage umrechnen. Diese JD-Anzahl kann als Zwischenvariable der Kalendererweiterung betrachtet werden, die für die Konvertierung zwischen verschiedenen Kalendern verwendet wird.

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

Verwenden Sie die Funktion unixtojd(), um einen Unix-Zeitstempel in einen JD-Zähler umzuwandeln. Schauen wir uns als Nächstes an, welcher Tag im jüdischen Kalender dem 23. September 2020 entspricht.

// 获取当前犹太历时间
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
// )

Die zurückgegebenen Informationen sind bereits sehr klar. Unser Tag ist Mittwoch, der 5. Januar 5781 im jüdischen Kalender. Der aktuelle Monat ist Tischri, der dem ersten Monat des gregorianischen Kalenderjahres und dem siebten Monat des Kirchenjahres im jüdischen Kalender entspricht, der die Ankunft des Herbstes darstellt. Die Funktion der Funktion

cal_from_jd() besteht darin, detaillierte Informationen des angegebenen Kalenders basierend auf der JD-Anzahl zurückzugeben. Die andere Funktion cal_to_jd() konvertiert unterstützte Kalenderdaten in einen JD-Zähler.

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

Sie können sehen, dass die vom jüdischen Kalender oben zurückgegebene jd-Anzahl mit der von unserem gregorianischen Kalender zurückgegebenen jd-Anzahl übereinstimmt.

Natürlich können wir das JD-Zähldatum auch in Unix-Zeit konvertieren.

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

Zusätzlich zu cal_from_jd() und cal_to_jd() stellt uns die Kalendererweiterung auch einige schnelle Funktionen für die Datumskonvertierung zur Verfügung, diese geben jedoch direkt Datumsinformationen vom Typ String zurück, nicht wie die Funktion cal_from_jd(). Gibt auch Datumsdetails zurück. Die Methode

// 转变一个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() dient dazu, ein Gregorianisches Datum schnell in eine JD-Anzahl umzuwandeln. Die Funktion von jdtoxxxx besteht darin, schnell die Zeichenfolgeninformationen des Datumskalenders zurückzugeben, die der JD-Anzahl entsprechen.

Jeder mag beachten, dass das Kalenderdatum nur das Datum innerhalb des Zeitraums vom 22. September 1792 bis 22. September 1806 sein kann. Dies ist der Kalender, der nach der Gründung der Ersten Französischen Republik eingeführt wurde und 1806 endete im Jahr 1804, als Napoleon das Erste Französische Reich gründete. Das Reich schaffte den französischen Kalender (republikanischen Kalender) ab und führte den gregorianischen Kalender vollständig ein.

Die Anzahl der Tage in einem bestimmten Monat

Wie erlernen Sie das oben genannte historische Wissen? Lassen Sie uns als Nächstes wieder etwas über die Kalendererweiterung lernen.

$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视频教程

Das obige ist der detaillierte Inhalt vonWas ist die Kalendererweiterung in PHP? Wie benutzt man?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:weixin. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen