Calendar est un ensemble d'extensions pour les calendriers de dates. Comment utiliser cette extension Calendar en PHP ? Cet article vous présentera comment installer et utiliser l'extension Calendrier.
Calendar est un ensemble d'extensions sur le calendrier des dates, mais pour nous, il n'a pas d'opérations liées au calendrier lunaire, donc pour nous, Chinois, cette extension n'a aucun effet réel. Mais cela ne nous empêche pas de le comprendre et de l’apprendre.
Type de calendrier de date
Pour les opérations de date dans des circonstances normales, PHP utilise par défaut l'heure UTC, qui est l'heure standard internationale, pour notre pays, nous devons ajouter 8 à l’heure UTC standard pour représenter l’heure du huitième district est de Pékin. Bien entendu, vous pouvez également modifier directement les paramètres liés au fuseau horaire dans le php.ini ou la base de données pour définir la date et le fuseau horaire.
Le fuseau horaire standard correspond en fait au calendrier horaire grégorien. Ce sont les dates du calendrier grégorien et du calendrier solaire que nous utilisons le plus couramment actuellement. En plus du calendrier grégorien standard, l'extension Calendrier prend également en charge le calendrier juif, le calendrier français et un autre calendrier julien très célèbre. Notre calendrier grégorien a évolué à partir du calendrier julien. La différence entre eux n'est pas grande, mais l'écart entre le calendrier juif et le calendrier français est relativement grand. Dans le code suivant, nous verrons les différences entre les différents calendriers.
Pour le contenu spécifique de ces calendriers, vous pouvez vérifier les informations pertinentes par vous-même, et vous pouvez également apprendre des connaissances historiques intéressantes, comme par exemple pourquoi le calendrier julien a été abandonné et le calendrier grégorien a été remplacé par le calendrier grégorien. calendrier. Aussi, pourquoi les années du calendrier français sont-elles seulement courtes, et pourquoi les années du calendrier juif sont-elles si mémorables ? Les origines des noms de mois dans le calendrier français et dans le calendrier juif sont toutes des histoires très intéressantes.
Installation de l'extension Calendrier et affichage des informations du calendrier
L'extension Calendrier a été intégrée au package d'installation PHP et n'a pas besoin d'être installée séparément . Si vous ne pouvez pas utiliser les fonctions liées au calendrier, vous pouvez recompiler PHP et ajouter le paramètre --enable-calendar.
Ensuite, nous examinons les détails du calendrier spécifié. Ici, nous spécifions le calendrier juif.
$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 // )
Le paramètre reçu par la fonction cal_info() est une constante, qui sont CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH et CAL_FRENCH. Leurs nombres correspondants sont 0, 1, 2 et 3. Dans ce code, ce que nous renvoyons sont les informations CAL_JEWISH. On peut voir que les noms des mois du calendrier juif sont différents des noms anglais du calendrier grégorien. Par exemple, il y a Nisan et Tishri. Je n’entrerai pas dans le contenu spécifique. Après tout, nous n’avons pas accès à ce genre de calendrier dans notre vie quotidienne.
Vous pouvez essayer vous-même les informations renvoyées par d'autres calendriers. Le calendrier grégorien et le calendrier julien sont les mêmes, mais les noms des mois dans le calendrier grégorien sont différents, et ces noms sont très intéressants.
Conversion du calendrier de date
Tout d'abord, pour effectuer la conversion du calendrier, nous devons convertir la date spécifiée en nombre de jours juliens. Ce nombre jd peut être considéré comme une variable intermédiaire de l'expansion du calendrier, utilisée pour la conversion entre différents calendriers.
// 转变Unix时间戳为Julian Day计数 $today = unixtojd(mktime(0, 0, 0, 9, 23, 2020)); echo $today, PHP_EOL; // 2459116
Utilisez la fonction unixtojd() pour convertir un horodatage Unix en un nombre jd. Voyons ensuite quel jour du calendrier juif correspond au 23 septembre 2020.
// 获取当前犹太历时间 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 // )
L'information renvoyée est déjà très claire. Notre jour est le mercredi 5 janvier 5781 dans le calendrier juif. Le mois en cours est Tishri, qui correspond au premier mois de l'année civile grégorienne et au septième mois de l'année ecclésiale du calendrier juif, qui représente l'arrivée de l'automne.
La fonction de cal_from_jd() est de renvoyer des informations détaillées sur le calendrier spécifié en fonction du nombre de jd. L'autre fonction cal_to_jd() convertit les données de calendrier prises en charge en nombre 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
Vous pouvez voir que le nombre de jd renvoyé par le calendrier juif ci-dessus est cohérent avec le nombre de jd renvoyé par notre calendrier grégorien.
Bien sûr, nous pouvons également convertir la date du décompte jd en heure unix.
echo date("Y-m-d", jdtounix($today)), PHP_EOL; // 2020-09-23
En plus de cal_from_jd() et cal_to_jd(), l'extension Calendar nous fournit également quelques fonctions rapides pour la conversion de date, mais elles renvoient directement les informations de date de type chaîne, pas comme la fonction cal_from_jd() renvoie également détails des dates. La méthode
// 转变一个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() consiste à convertir rapidement une date grégorienne en nombre jd. Les fonctions jdtoxxxx sont conçues pour renvoyer rapidement les informations de chaîne du calendrier de date correspondant au nombre jd.
Veuillez noter que les dates du calendrier ne peuvent être comprises que dans la période du 22 septembre 1792 au 22 septembre 1806, qui est le calendrier introduit après la fondation de la Première République française et dont l'utilisation a pris fin en 1806. , puisque Napoléon fonda le Premier Empire français en 1804. L'empire abolit le calendrier français (calendrier républicain) et appliqua pleinement le calendrier grégorien.
Le nombre de jours dans un certain mois
Comment apprenez-vous les connaissances historiques ci-dessus ? Revenons ensuite à la découverte de l’extension Calendrier.
$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视频教程》
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!