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

Posted

技术标签:

【中文标题】Laravel 计算上一个和下一个重复日期【英文标题】:Laravel calculating previous and next recurring date 【发布时间】:2017-12-03 01:32:02 【问题描述】:

我正在建立一个循环事件模型,例如

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'

任何建议都将不胜感激,我可能会做完全错误的事情。希望我已经很好地解释了预期的结果。提前感谢任何可以提供帮助的人。

【问题讨论】:

【参考方案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)...

【讨论】:

【参考方案2】:

使用碳,

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

您也可以使用addWeeks 函数,例如:addWeeks(1)addWeeks(-1)

【讨论】:

那不只是给我原始日期的前后一周吗?我希望通过任何日期,并返回上一次和下一次发生的事件。 你想要什么?获取上周和下周日期的两个函数? @patskot 你成功了吗?你能分享一个你最终是怎么做的例子吗 嗨@TumainiMosha,我已经继续并为此添加了答案。见上文。

以上是关于Laravel 计算上一个和下一个重复日期的主要内容,如果未能解决你的问题,请参考以下文章

查找输入日期的下一个和上一个日期[重复]

Laravel上一个和下一个记录

Laravel 路由问题:自动重定向到根文件夹

在具有上一个和下一个按钮的文本框中显示单个日期

根据前一个和下一个字段的值计算一个字段值

JS中在当前日期上追加一天或者获取上一个月和下一个月