我正在开发一个用户每月付费的订阅服务。
我有两个约会
1:2012-12-05($ today)
2:2013-01-05($ end_date)
对我来说,那是一个月。但对于PHP来说,这只是30天。
以下是一些代码(您可以看到上面映射的日期的值)
$end_date_for_new_agents = clone $end_date;
$end_date_for_new_agents = $end_date_for_new_agents->add(new DateInterval("P1D"));
$agent_period_months_obj = $today->diff($end_date_for_new_agents);
echo $agent_period_months_obj->format("%y-%m-%d")
这回声0-0-30
为什么会这样,我如何让PHP计算不同月份中相同日期与整月的差异?
答案 0 :(得分:2)
你也应该考虑时间,或者日子不完整。
例如:
date_default_timezone_set("Europe/Rome");
$end='2013-01-05';
$intervalo = date_diff(date_create(), date_create($end));
echo $intervalo->format("Years:%Y,Months:%M,Days:%d,Hours:%H,Minutes:%i,Seconds:%s");
结果:
Years:00,Months:00,Days:30,Hours:05,Minutes:59,Seconds:53
以下代码
date_default_timezone_set("Europe/Rome");
$start='2012-12-05';
$end='2013-01-05';
$intervalo = date_diff(date_create($start), date_create($end));
echo $intervalo->format("Years:%Y,Months:%M,Days:%d,Hours:%H,Minutes:%i,Seconds:%s");
给出结果:
Years:00,Months:01,Days:0,Hours:00,Minutes:0,Seconds:0
检查$today
的值是否也有时间,如果是,您应该只提取日期并忘记时间