PHP DateInterval:两个不同月份中相同日期之间的差异不是一个月

时间:2012-12-05 16:26:34

标签: php date

我正在开发一个用户每月付费的订阅服务。

我有两个约会

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计算不同月份中相同日期与整月的差异?

1 个答案:

答案 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的值是否也有时间,如果是,您应该只提取日期并忘记时间