使用Laravel carbon计算下一个X天(无周日)

使用Laravel carbon计算下一个X天(无周日),laravel,validation,datetime,php-carbon,Laravel,Validation,Datetime,Php Carbon,我正在使用Laravel开发一个基于订阅的应用程序。我想更改用户的状态,使其在订阅包75天后过期。我想把这75天里的星期天排除在外 考虑这样一个场景:用户的帐户今天被验证,并且他只有75天(不包括周日)的时间访问高级功能。在75天后,用户需要重新订阅才能访问应用程序的高级功能 然后我将设置一个中间件,它将检查用户的订阅是否过期 我有两种情况需要检查过期情况: 在用户表中保存到期日期列。 根据“已验证的_at datetime”列验证每个用户的请求,如果用户订阅超过75天且没有周日,则阻止高级访问

我正在使用Laravel开发一个基于订阅的应用程序。我想更改用户的状态,使其在订阅包75天后过期。我想把这75天里的星期天排除在外

考虑这样一个场景:用户的帐户今天被验证,并且他只有75天(不包括周日)的时间访问高级功能。在75天后,用户需要重新订阅才能访问应用程序的高级功能

然后我将设置一个中间件,它将检查用户的订阅是否过期

我有两种情况需要检查过期情况:

在用户表中保存到期日期列。 根据“已验证的_at datetime”列验证每个用户的请求,如果用户订阅超过75天且没有周日,则阻止高级访问。 我希望使用或任何其他替代库/功能来实现这一点

从今天开始的75天后,6月11日是8月25日如果75是固定的,那么您可以轻松计算该期间的星期日数,因此您只需将这些天添加到75:

关键是,在75天内可能有10个或11个星期天,因此为了决定是有10个还是11个,我们需要检查哪一天是第一天。 假设周一是第一天,那么75天应该是这样的

1 - Monday
2 - Tuesday
...
71 - Monday
72 - Tuesday
73 - Wednesday
74 - Thursday
75 - Friday
1 - Tuesday
2 - Wednesday
...
71 - Tuesday
72 - Wednesday
73 - Thursday
74 - Friday
75 - Saturday
1 - Wednesday
2 - Thursday
...
71 - Wednesday
72 - Thursday
73 - Friday
74 - Saturday
75 - Sunday
假设星期二是第一天,那么75天应该是这样的

1 - Monday
2 - Tuesday
...
71 - Monday
72 - Tuesday
73 - Wednesday
74 - Thursday
75 - Friday
1 - Tuesday
2 - Wednesday
...
71 - Tuesday
72 - Wednesday
73 - Thursday
74 - Friday
75 - Saturday
1 - Wednesday
2 - Thursday
...
71 - Wednesday
72 - Thursday
73 - Friday
74 - Saturday
75 - Sunday
假设周三是第一天,那么75天应该是这样的

1 - Monday
2 - Tuesday
...
71 - Monday
72 - Tuesday
73 - Wednesday
74 - Thursday
75 - Friday
1 - Tuesday
2 - Wednesday
...
71 - Tuesday
72 - Wednesday
73 - Thursday
74 - Friday
75 - Saturday
1 - Wednesday
2 - Thursday
...
71 - Wednesday
72 - Thursday
73 - Friday
74 - Saturday
75 - Sunday

因此,如果第一天既不是星期一也不是星期二,那么将有11个星期天10+出现在[71-75]中的1,否则将只有10个星期天

我可以使用以下PHP函数计算除星期天以外的接下来75天

函数NEXT75天$StartingDate{ //计算下一个75天(不包括星期日) $Days=75; $d=新日期时间$StartingDate; $t=$d->getTimestamp; //循环75天
对于I$=0;IDO你介意再解释一下。从今天起86天和85天没有显示确切的日期,从现在开始,不包括星期日。@穆哈迪斯,请检查我的答案的答案。@ Btoto99谢谢你的回答和你的解释,我在使用你提供的解决方案时发现了一些问题。考虑,我创建了一个ACO。unt今天是6月12日星期五,也就是第5天,那么$period_in_days将是86,如果我从星期五开始的86天之后得到的日期是2006年9月6日,而如果我从星期五开始的75天(不包括星期日)得到的日期是2008年9月8日。我已经使用See验证了我的答案,我如何解决这个问题