【问题标题】:PHP Date: Every monday next 3 weeks (Google Calendar remake)PHP 日期:接下来 3 周的每个星期一(谷歌日历重制版)
【发布时间】:2015-01-20 02:53:17
【问题描述】:

我正在制作一个 CRM 系统,我现在需要为人们提供重复性活动。为此,他们必须填写每天、每周、每月或每年,以及您在 Google 日历中填写的所有内容。

但是,例如,我如何在数组中获取“接下来 3 周的星期一”的日期?

【问题讨论】:

    标签: php mysql date datetime


    【解决方案1】:
    $int_count = 3; // How many to repeat
    $date = new \DateTime('next monday');
    $result = array($date->format('Y-m-d'));
    for ($i=1; $i<$int_count; $i++) { 
        $result[] = $date->modify('+1 week')->format('Y-m-d'); 
    }
    
    print_r($result);
    

    结果:

    Array
    (
        [0] => 2015-01-26
        [1] => 2015-02-02
        [2] => 2015-02-09
    )
    

    【讨论】:

    • 您将新技术(DateTime 类)与旧技术(不使用 DatePeriod 迭代器)混合在一起。看我的回答,它更干净
    • 说第一个答案(自删除后)是使用 strtotime 的人...您当然可以为此使用迭代器,但两个答案在功能上是相同的,我想说这个更清晰对于新手来说理解,但是YMMV。
    【解决方案2】:

    最好的方法是使用DateTimeDatePeriod 类。这是现在处理日期最正确的方法。它自动处理时区和 DST 转换。这就是你必须这样做的方式。

    $daterange = new DatePeriod(new DateTime('next monday'), new DateInterval('P1W'), 2);
    
    $dates = [];
    foreach($daterange as $date) $dates []= $date->format("Y-m-d H:i:s");
    
    print_r($dates);
    

    结果将是:

    Array
    (
        [0] => 2015-01-26 00:00:00
        [1] => 2015-02-02 00:00:00
        [2] => 2015-02-09 00:00:00
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 2014-07-24
      • 2011-05-18
      • 2019-12-29
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多