PHP用小时和分钟减去日期
嗨,我在网上搜索过这个话题,似乎不能给我正确的答案? 我做错了什么?我想输出过期期间的剩余天数,以小时和分钟为单位 这就是我所做的PHP用小时和分钟减去日期,php,time,subtraction,Php,Time,Subtraction,嗨,我在网上搜索过这个话题,似乎不能给我正确的答案? 我做错了什么?我想输出过期期间的剩余天数,以小时和分钟为单位 这就是我所做的 $date_expire = '2014-09-12 23:59:59'; $date = new DateTime($date_expire); $now = new DateTime(); echo $date->diff($now)->format("%d days, %H hours and %i minutes"); 我来自菲律宾,我写
$date_expire = '2014-09-12 23:59:59';
$date = new DateTime($date_expire);
$now = new DateTime();
echo $date->diff($now)->format("%d days, %H hours and %i minutes");
我来自菲律宾,我写这封信的当前日期和时间是2014年8月13日下午5:26
输出给我29天12小时30分钟。你认为哪一个是错的?你能帮助我吗?谢谢 您的源代码运行良好,它符合您的期望 是的,那一天错过了29天12小时30分钟又几个月 问题是您没有打印月份: 这里是您的脚本,包括月份:
// this is your start date
$date_expire = "2014-09-12 23:59:59";
// build a DateTime instance from it
$date = new DateTime($date_expire);
// another instance for the date of NOW
$now = new DateTime();
// print the difference with %m (months) included
echo $date->diff($now)->format("%m months, %d days, %H hours and %i minutes");
作为参考,%a是一个不错的选择。这里结合一个简单的检查是否有一些订阅已过期
date_default_timezone_set('Asia/Manila');
// August 13, 2014 5:26pm
$date_now = '2014-08-13 17:26:00';
$date_expire = '2014-09-12 23:59:59';
$now = new DateTime($date_now);
$expires = new DateTime($date_expire);
$diff = $expires->diff($now)->format("%a days, %h hours and %i minutes");
if ($now < $expires) {
echo "Your subscription will expire in $diff", PHP_EOL;
} else {
echo "Your subscription expired $diff ago", PHP_EOL;
}
今天运行它,使用$now=newdatetime;该输出为:
Your subscription expired 168 days, 2 hours and 56 minutes ago
服务器可能有其他时区。在php.ini中设置它,或者使用date\u defualt\u timezone\u sets而不是%d,使用%a将返回日差总数。
Your subscription expired 168 days, 2 hours and 56 minutes ago