每个人,我正在为一个客户构建此项目,该项目需要一种类似的进度条指示器,以显示用户订阅计划何时到期,例如,以天数 X 注册的用户并且该计划应在之后的7天内结束(届时将完成用户试用)。
这是我正在使用的逻辑,但似乎没有用,任何更好的理想或解决方法都会更好。
用户注册日期返回2018-09-11 16:32:08.000000-(LARAVEL CARBON)保存在数据库中
,然后使用以下代码将其添加7天 Carbon :: createFromFormat('Y-m-d H:i:s',2018-09-11 16:32:08.000000;
用户跟踪过期日期结束于2018-09-18 16:32:08.000000-未保存在数据库中。
在我看来,我的这个div包含引导进度指示器。
if (i % 1000 == 0 || (i < 1000 && i % 3 == 0)) {
//if (i % 100 == 0) {
//if(i >= (iter_save + 100)) {
同样的问题是,我该如何在每天经过的每一天之间循环或切换大小写,以至少指示进度,例如,如果日期是大一天,则添加变量以返回20%-我可以放在进度div
答案 0 :(得分:0)
我不使用Laravel,但是我会说这样的话
Namespace
我可能在数学上是错的,因为我只是在说些什么。
您可能需要执行以下操作,具体取决于您要“剩余时间”还是“经过时间”
SparkR
例如,使用以下两个Unix时间戳:
$Carbon = New Carbon($row['subscribe_date']); //not sure how you do this
//expire 7 days after original date
$Carbon ->modify('+7 days');
$expire = $Carbon->getTimestamp();
$percent = round(($expire / time())*100);
if($percent <= 0) //expired
我看过Carbon,它只是DateTime的扩展,因此精确到秒。
然后,您当然需要将其返回为JSON,我确信有一些很酷的Laravel方法可以做到这一点。
如果您想要天数,则可以将两者相减并除以一天中的秒数。
$percent = round(100-($expire / time())*100));
if($percent > 100) //expired
如果您不喜欢// 2018-9-9 / 2018-9-16 = 99.99 something.
// and maybe you want the something, the 00.01 bit.
1536451200 / 1537056000
$seconds = time() - $Carbon->getTimestamp();
if($seconds > 0 )
$days = floor($seconds / (60*60*24)); //60 seconds * 60 minutes * 24 hours
else
$days = 0;
这只是简单的算法。
干杯!