首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PHP计算英国母亲节

用PHP计算英国母亲节
EN

Stack Overflow用户
提问于 2021-12-30 12:36:38
回答 2查看 53关注 0票数 0

我希望能够计算下一个母亲节将在什么时候使用PHP,但我不知道如何做到这一点,因为在英国,它是基于每年都在变化的四旬斋和复活节。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-30 12:46:04

嗯,这是个有趣的故事。据我所见,英国的母亲节就在复活节前的第三个星期日上。PHP有一个名为日期的函数,它为我们提供了特定年份复活节的时间戳。所以你要做的是得到复活节的时间戳,然后使用strtotime减去3周。

代码语言:javascript
复制
$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

或者是一条单线:

代码语言:javascript
复制
$mothers_day = date('Y-m-d', strtotime(date('Y-m-d', easter_date(2021)).' -3 weeks'));

编辑显然直到2037年才开始工作。还有一个函数,天数,它计算3月21日后复活节的天数。在这种情况下,您可以这样做:

代码语言:javascript
复制
$year = 2058;
$mothers_day = date('Y-m-d', strtotime("$year-3-21 + ".easter_days($year). " days -3 weeks")); // 2058-03-24
票数 3
EN

Stack Overflow用户

发布于 2021-12-30 13:41:05

函数easter_date仅在1970年至2037年期间有效。最好使用函数天数和DateTime。

代码语言:javascript
复制
function createDateEastern($year, $timezone = null) {
  $easterDays = easter_days($year, CAL_EASTER_ALWAYS_GREGORIAN);
  return date_create($year.'-3-21',$timezone)->modify($easterDays.' Days');
} 

您可以轻松地计算英国母亲节

代码语言:javascript
复制
$motheringSunday = createDateEastern(2021)->modify('-3 weeks');
//object(DateTime)#2 (3) { ["date"]=> string(26) "2021-03-14 00:00:00.000000"

您还可以使用DateTime扩展dt。该类可以使用日期表达式执行链,特别是在此类假日计算中。例如,今年的母亲节:

代码语言:javascript
复制
$dt = dt::create('{{easter}}|-3 Weeks');  

echo $dt->format('Y-m-d');  //2021-03-14 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70531781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档