我需要今年的复活节日期。今年的复活节2021年将在4月4日(星期日)的上举行。
但是当我运行echo date('Y-m-d',easter_date(2021));时,PHP会返回:
2021-04-03那件事怎么可能?怎么了?
发布于 2021-01-28 12:06:37
摘自PHP手册:链接
注意: easter_date()依赖于系统的C库时间函数,而不是使用PHP的内部日期和时间函数。因此,easter_date()使用TZ环境变量来确定它应该在其中操作的时区,而不是使用PHP的默认时区,这可能会导致与PHP中的其他日期函数一起使用此函数时的意外行为。作为解决办法,您可以使用easter_days()与DateTime和DateInterval一起计算PHP时区中复活节的开始时间,如下所示:
<?php
function get_easter_datetime($year) {
$base = new DateTime("$year-03-21");
$days = easter_days($year);
return $base->add(new DateInterval("P{$days}D"));
}
foreach (range(2015, 2022) as $year) {
printf("Easter in %d is on %s\n",
$year,
get_easter_datetime($year)->format('D F j'));
}结果
PHP 8.0.1
Easter in 2015 is on Sun April 5
Easter in 2016 is on Sun March 27
Easter in 2017 is on Sun April 16
Easter in 2018 is on Sun April 1
Easter in 2019 is on Sun April 21
Easter in 2020 is on Sun April 12
Easter in 2021 is on Sun April 4
Easter in 2022 is on Sun April 17发布于 2021-01-28 19:16:52
一种更灵活的方法是使用复活节方法。
echo dt::Easter(2021)->format('l, j F Y');
//Sunday,4 April 2021
//Orthodox Easter 2021
echo dt::Easter(2021,dt::EASTER_EAST)->format('l, j F Y');
//Sunday, 2 May 2021Easter方法是此PHP类的一部分。
https://stackoverflow.com/questions/65936161
复制相似问题