【问题标题】:Get number of occurrences/times between two dates获取两个日期之间的出现次数/次数
【发布时间】:2019-03-05 00:47:33
【问题描述】:

我正在尝试获取两个日期之间的次数。我收到了 4 种类型的信息:freqintervalstartDateendDate

例如:

freq = weekly
interval = 1
startDate = 2019-03-10
endDate = 2019-03-24

我正在尝试使用给定信息获取这两个日期之间的时间/日期/事件数。 (计数或事件数)

在本例中,由于频率为weekly,间隔为 1,这意味着每 1 周在 startDate 重复该事件。如果将间隔更改为 2,则将是每 2 周。如果将频率改为每天,间隔为 3,则为每 3 天一次。

在此示例中,第一个事件将在 2019-03-10 上,然后第二个事件将在 2019-03-17 上,然后第三个将在 2019-03-24 上。 count 在此示例中为 3,因为有三个日期。

我正在尝试查找 计数

谢谢

【问题讨论】:

  • 请分享您的尝试。另请列出可能的频率。
  • 问题。在您的示例中,“freq”和“interval”可被“startDate”和“endDate”整除,但如果您只是将“interval”从“1”更改为“3”,则“startDate”和“endDate”将不再是可被“频率”和“间隔”整除。示例...间隔 1,每周,等于 2019-03-10 (1)、2019-03-17 (2)、2019-03-24 (3),但间隔 3,每周将等于 2019-03-10 (1) 因为下一个间隔将是 2019-03-31,它超过了 'endDate' 2019-03-24。所以我的(?)是......所以'endDate'保证'事件'会在'endDate'发生,即使'NEXT INTERVAL'超过'endDate'......
  • ... 如果这是真的,那么“间隔”3 的计数,每周将等于 2019-03-10 (1)、2019-03-24 (2),或者如果这不是真的, 'interval' 3, 每周将等于 2019-03-10 (1)... 那么它将遵循哪个规则... 当间隔 = 3、频率 = 每周和 statrDate 时返回 (1) 或返回 (2) = 2019 年 3 月 10 日,结束日期 = 2019 年 3 月 24 日?

标签: php date datetime time calendar


【解决方案1】:

好吧,如果您使用 Datetime 类或 Carbon,您可以轻松地遍历这些日期之间的天/周/月。例如,如果你的频率 = 每周和间隔 = 1,给定你提供的 startDate 和 endDate,代码将是这样的:


use Carbon\Carbon;

$startDate = Carbon::create(2019,03,10,0,0);

$endDate =  Carbon::create(2019,03,24,0,0);

$count = 0;

while(! $startDate->greaterThan($endDate) ) 
{
     $count += 1;

     if($freq === 'weekly')
     {
        $startDate->addWeeks($interval);
     }
     else if($freq === 'monthly') 
     {
        $stardDate->addMonths($interval);
     }
}

在这个例子中我使用了碳,因为它可以节省你很多时间,但是你可以通过使用 PHP 日期时间类来做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 2019-07-06
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    相关资源
    最近更新 更多