【问题标题】:How do i determine the nth weekday of a given date in php我如何在php中确定给定日期的第n个工作日
【发布时间】:2009-06-12 10:25:48
【问题描述】:

我正在编写一个日历脚本,我需要在其中重复一个日历事件,例如 “每个月的第一个星期二重复”

在上面的例子中。如何获得“第一”?

例如,今天是 2009 年 6 月 12 日,这意味着它是“六月的第二个星期五”我如何获得“第二个”?

提前致谢

【问题讨论】:

    标签: php datetime date


    【解决方案1】:

    除以 7 并向上取整:

    ceil(date('j') / 7);
    

    【讨论】:

    • 呵呵,我一直在思考如何解决这个问题。我没有想到这一点。干净、优雅、+1。
    • 哈哈是的,我花了一分钟,然后我就像“哦,当然!”
    • 另外,请记住,日期采用可选的第二个参数(时间戳),因此该解决方案可以重复用于任意日期。
    • 你太棒了,尼克!干得好。
    • @nickf 真的。我完全错过了。非常感谢。
    【解决方案2】:

    这行得通:

    <?php
    
    $date = date('Y-m-d', mktime(0, 0, 0, date('m'), 1, date('y')));
    
    echo date('Y-m-d', strtotime($date.'next tuesday'));
    
    ?>
    

    第一行创建了一个日期,即本月的第一天。 第二行从 $date 获取下一个星期二。

    您还可以查看date 和mktime 和strtotime。

    【讨论】:

    • 您正在做与 OP 要求相反的事情。给定一个日期,告诉我这个月之前有多少个星期五(或其他),而不是第 n 个星期五的日期?
    【解决方案3】:
    function dayOfWeek($d, $m, $y) 
    { 
        static $t = [0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4]; 
        $y -= $m < 3; 
        return ($y + $y / 4 - $y / 100 + $y / 400 + $t[$m - 1] + $d) % 7; 
    } 
    
    // 30th August 2010
    // 0: sunday - 6: saturday
    echo dayOfWeek(30, 8, 2010); 
    

    【讨论】:

      猜你喜欢
      • 2012-10-19
      • 2011-07-28
      • 1970-01-01
      • 2020-08-24
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多