【问题标题】:Calculate third monday of month计算每月的第三个星期一
【发布时间】:2014-05-10 08:13:29
【问题描述】:

我已经搜索和搜索,但似乎找不到任何适合我正在尝试做的事情,而且我似乎无法弄清楚如何让它发挥作用。

这是概览: 我的电脑俱乐部在每个月的第三个星期一开会,一周后俱乐部董事会开会。在我们的俱乐部网站上,他们每个月都会手动更改此日期... :(

我正在尝试使用 PHP 将其自动化。我有一点运气,但在大多数情况下它不会正确。

这是我正在使用的代码示例:

//Set Default Time Zone
date_default_timezone_set('America/New_York');

//Define Variables Needed
$now = date("U");
$currmonth = date("n");
$curryear = date("Y");
$monthyear = date("F Y");
$thirdmon = date('U', strtotime($monthyear.' third monday'));
$thirdtue = date('U', strtotime($monthyear.' third tuesday'));

//Check for current date before or after third monday of the current meeting month
if ($now > $thirdtue) {
    $monthyear = date("F Y", strtotime('next month'));
    $thirdmon = date('U', strtotime($monthyear.' third monday'));
}

echo date("l F d, Y", $thirdmon);

我添加了 $thirdtue 变量,因为检查 $thirdmon 变量会导致实际会议日期出现问题,因为它会跳转到下个月的会议日期,所以我检查了第三个星期二,它不会跳转到现在是会议日期的午夜。

现在奇怪的是,我在 2014 年 3 月 30 日进行了这项工作,并且将 2014 年 4 月 21 日显示为下一个会议日期,这是正确的。当时间滚动到午夜 00:00 并且日期更改为 2014 年 3 月 31 日时,会议日期更改为 2014 年 5 月 19 日!?!?!

我的代码的其他几个部分也有问题,这些部分进行了一些其他计算,但我想如果我能把它写下来,那么我应该能够解决剩下的问题。

谁能告诉我我在哪里出轨了?

【问题讨论】:

标签: php date webpage


【解决方案1】:
$third_monday = new DateTime('third monday of this month');

// if date has passed, get next month's third monday
if ($third_monday < new DateTime()) {
    $third_monday->modify('third monday of next month');
}

echo $third_monday->format('l F d, Y');

【讨论】:

    【解决方案2】:

    我对 php 没有太多经验,但我把它放在一起。它已经过测试,似乎可以工作。

    <?php
       date_default_timezone_set('America/New_York');
    
       $currmonth = date("n");
       $curryear = date("Y");
       $currthirdmon =  date("d", strtotime("third monday", mktime(0,0,0,$currmonth,1,$curryear)));
    
       if ($currthirdmon < date("d"))
       {
        $nextmeeting = date("l F d, Y", strtotime("third monday", mktime(0,0,0,$currmonth+1,1,$curryear)));
       }
       else
       {
         $nextmeeting = date("l F d, Y", strtotime("third monday", mktime(0,0,0,$currmonth,1,$curryear)));
       }
    
       print $nextmeeting;
    ?>
    

    【讨论】:

    • 你为什么用“第三个星期三”?
    • 发生在我们最好的人身上 ;-)
    • ps:我不是 OP ;-)
    • 哈!应该注意到这一点。
    猜你喜欢
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-01
    相关资源
    最近更新 更多