我正在使用time()在数据库中存储日期。 我有一些广告网站。 用户提交广告以及他们希望展示广告的天数,例如:
标题:广告标题....
持续时间:20天
创建日期:time()(当我出现时,我按时间()得到创建日期 在数据库上提交此广告。 )
我需要在纪元格式上计算每个广告的到期日期。
exp_date = creation date + 20 days ; /// this line is hypothetical , i need correct way to calculate exp_Date
sql->set(experation date = exp_date);
此外,我需要知道在几天,几小时和几分钟内将多长时间留在exp日期并在页面上显示。
$current time = time();
$remaining_time = $current time - $exp date ; //this line is hypothetical , i need correct way to calculate remaining_time
echo 'remaining time : '.$remaining_time ;
最后我不想显示已过期的广告(我不确定这样做的最佳方式是计算我展示广告的时间,也许我可以在20天后以某种方式自动停用广告状态?)
current date = time();
if (ads experation date > current date ) // this line is hypothetical , i need to calculate this
sql->update ('set ads status= 0');
echo 'this ad has been expires ';
exit;
答案 0 :(得分:1)
计算到期日期:
$expiration = time() + 1728000; // 1728000 = 20 * 24 * 60 * 60 (20 days)
要计算剩余时间,您应该执行类似
的操作$currentTime = time();
$seconds = $expiration - $currentTime;
$daysLeft = (int)($seconds / 86400); // 86400 = 24*60*60 (seconds in one day)
$seconds -= $daysLeft * 86400;
$hoursLeft = (int)($seconds / 3600); // 3600 = 60*60 (seconds in one hour)
$seconds -= $hoursLeft * 3600;
$minutesLeft = (int)($seconds / 60); // seconds in one minute
$seconds -= $minutesLeft * 60;
$daysLeft
,$hoursLeft
,$minutesLeft
和$seconds
是您想要的值
答案 1 :(得分:0)
我需要在纪元格式上计算每个广告的到期日期。
你碰巧知道一分钟内的秒数吗?小时分钟怎么样?一天中的小时数?
是什么让你无法乘以这些数字?
我不想展示已过期的广告
不要显示它们。这就是SQL for。 WHERE exp_date > unix_timestamp()
只会选择实际广告。
答案 2 :(得分:-1)
为什么不通过每天运行一次脚本(cron
会这样做)来简化生活,并通过这些广告删除(或移动)它们?