Laravel计算上一个和下一个重复日期

时间:2017-06-29 11:14:42

标签: php sql postgresql laravel

我正在设置定期事件模型,例如

event: {
    id: 1,
    name: 'event name',
    date: '2017-04-22', // First occurrence of the event
    frequency: 'weekly'
}

目标是能够根据给定日期计算事件的上一次和下一次出现,例如。

getLastOccurrance('2017-06-29') // Would return '2017-06-24'
getNextOccurrance('2017-06-29') // Would return '2017-07-01'

如果我能以某种方式在事件的雄辩查询中返回上一个和下一个日期,那将是非常棒的。类似的东西:

event: {
    id: 1,
    name: 'event name',
    date: '2017-04-22',
    frequency: 'weekly',
    last_event: '2017-06-24',
    next_event: '2017-07-01'
}

任何建议都会非常感激,我可能会发生完全错误的事情。希望我已经足够好地解释了期望的结果。提前感谢任何可以提供帮助的人。

2 个答案:

答案 0 :(得分:1)

我最终使用了php的DateInterval和DatePeriod函数来获取日期数组。这是一个示例:

  $start      = new DateTime( '2018-08-01' ); // Date to increment from
  $end        = new DateTime( '2018-10-01' ); // Date to increment up to
  $interval   = new DateInterval("P2D"); // The increment interval, 2 days
  $days       = new DatePeriod($start, $interval, $end);

  foreach($days as $day)...

答案 1 :(得分:0)

使用碳,

$next_event = Carbon::parse('2017-04-22')->addDays(7);
$last_event = Carbon::parse('2017-04-22')->addDays(-7);

您也可以使用addWeeks功能:addWeeks(1)addWeeks(-1)