我希望能夠計算下一個母親節何時在 PHP 中,但我不確定如何做到這一點,因為在英國,它基于每年都在變化的四旬期和復活節。
uj5u.com熱心網友回復:
嗯,這是一個有趣的。據我所知,英國的母親節是復活節前的第三個星期天。PHP 有一個名為easter_date 的函式,它為我們提供了給定年份復活節的時間戳。所以你要做的就是獲取復活節時間戳,然后使用 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 年。還有另一個函式,easter_days,它計算復活節在 3 月 21 日之后的天數。在這種情況下,您可以這樣做:
$year = 2058;
$mothers_day = date('Y-m-d', strtotime("$year-3-21 ".easter_days($year). " days -3 weeks")); // 2058-03-24
uj5u.com熱心網友回復:
函式easter_date 僅在1970 年和2037 年之間的年份有效。最好使用函式easter_days和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://www.uj5u.com/yidong/398931.html
標籤:php
