php - 通过增加时间来增加进度条
问题描述
大家,我有这个项目,我正在为一个客户构建这个项目,该客户需要一种类似进度条指示器来显示用户订阅计划何时到期,例如用户在X天注册,并且计划应该在下一个结束7 天后(用户试用将在其中完成)。
这是我正在使用的逻辑,但它似乎不起作用,任何更好的理想或绕过它的方法都会更好。
用户注册日期返回 2018-09-11 16:32:08.000000 - (LARAVEL CARBON) 保存在数据库中
然后我使用以下代码添加 7 天 Carbon::createFromFormat('Ymd H:i:s', 2018-09-11 16:32:08.000000;
用户跟踪到期日期结束于 2018 年 9 月 18 日 16:32:08.000000 - 未保存在数据库中。
在我看来,我有这个包含引导进度指示器的 div。
<div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 20%">
<span class="sr-only">20%Complete (danger)</span>
</div>
再次问题是,我如何循环或在经过的每一天之间切换案例以至少指示进度,例如,如果日期比前一天添加使变量返回 20% - 我可以将其放在进度 div
解决方案
我不使用 Laravel,但我会说这样的话
$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
我可能在数学上是错的,因为我只是在想办法。
你可能需要做这样的事情,这取决于你想要“剩余时间”还是“经过的时间”
$percent = round(100-($expire / time())*100));
if($percent > 100) //expired
以这两个 Unix 时间戳为例:
// 2018-9-9 / 2018-9-16 = 99.99 something.
// and maybe you want the something, the 00.01 bit.
1536451200 / 1537056000
我看过 Carbon,它只是 DateTime 的扩展,这样它就可以精确到秒。
然后当然你需要将它作为 JSON 返回,我相信有一些很酷的 Laravel 方法可以做到这一点。
如果您想要天数,则可以将两者相减并除以一天中的秒数。
$seconds = time() - $Carbon->getTimestamp();
if($seconds > 0 )
$days = floor($seconds / (60*60*24)); //60 seconds * 60 minutes * 24 hours
else
$days = 0;
如果您不喜欢,您可以随时为时间戳执行此操作time
(new Carbon)->getTimestamp();
这只是简单的算术。
干杯!
推荐阅读
- bash - 逐行比较 4 个文件,看它们是否匹配
- java - 如何在 Spring Boot 项目中制作谷歌自动登录功能?
- google-apps-script - Gscript 中的新段落
- jekyll - Jekyll+Github 页面:如何使用 `remote_theme` 进行主题代码的特定修订
- javascript - 从数组中淡入随机引用
- ruby-on-rails - 如何在 Ruby on Rails 上使用 3D stl 查看器
- sql - SQL:过滤(行)在组(列)中具有最大值
- python - 读取多个电子表格 - 来自中央电子表格的文件路径
- python - 为什么第一次导入 skimage 失败,但第二次成功?
- android - Geckoview 获得麦克风权限