我希望能够计算下一个母亲节将在什么时候使用PHP,但我不知道如何做到这一点,因为在英国,它是基于每年都在变化的四旬斋和复活节。
发布于 2021-12-30 12:46:04
嗯,这是个有趣的故事。据我所见,英国的母亲节就在复活节前的第三个星期日上。PHP有一个名为日期的函数,它为我们提供了特定年份复活节的时间戳。所以你要做的是得到复活节的时间戳,然后使用strtotime减去3周。
$easter = easter_date(2021); // 1617508800
$easter_date = date('Y-m-d', $easter); // "2021-04-04"
$mothers_day = date('Y-m-d', strtotime($easter_date).' -3 weeks')); // 2021-03-14或者是一条单线:
$mothers_day = date('Y-m-d', strtotime(date('Y-m-d', easter_date(2021)).' -3 weeks'));编辑显然直到2037年才开始工作。还有一个函数,天数,它计算3月21日后复活节的天数。在这种情况下,您可以这样做:
$year = 2058;
$mothers_day = date('Y-m-d', strtotime("$year-3-21 + ".easter_days($year). " days -3 weeks")); // 2058-03-24发布于 2021-12-30 13:41:05
函数easter_date仅在1970年至2037年期间有效。最好使用函数天数和DateTime。
function createDateEastern($year, $timezone = null) {
$easterDays = easter_days($year, CAL_EASTER_ALWAYS_GREGORIAN);
return date_create($year.'-3-21',$timezone)->modify($easterDays.' Days');
} 您可以轻松地计算英国母亲节
$motheringSunday = createDateEastern(2021)->modify('-3 weeks');
//object(DateTime)#2 (3) { ["date"]=> string(26) "2021-03-14 00:00:00.000000"您还可以使用DateTime扩展dt。该类可以使用日期表达式执行链,特别是在此类假日计算中。例如,今年的母亲节:
$dt = dt::create('{{easter}}|-3 Weeks');
echo $dt->format('Y-m-d'); //2021-03-14 https://stackoverflow.com/questions/70531781
复制相似问题