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 计算上一个和下一个重复日期的主要内容,如果未能解决你的问题,请参考以下文章