1

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

我有两个约会

1: 2012-12-05 ($今天)

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 计算不同月份的相同日期之间的差异作为整个月份?

4

1 回答 1

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是否也有时间,如果有,你应该只提取日期而忘记时间

于 2012-12-05T17:02:50.217 回答