Php 将一个日期间隔除以另一个日期间隔

Php 将一个日期间隔除以另一个日期间隔,php,datetime,Php,Datetime,假设我有一个日期间隔是1年,另一个是3个月 有没有可能把一个除以另一个,得到一个4的答案,也就是说,在一年的时间间隔内有4个3个月的时间间隔?日期不容易进行数学运算。我们可以做加法和减法,仅此而已。乘法没有什么意义(1个月乘以12个月=1平方年?),但除法可以理解为“有多少间隔?”可以通过重复减法实现 为现在的创建一个DateTimeImmutable添加尝试对其执行除法的第一个间隔。然后,减去第二个间隔,直到获得小于(或等于)原始日期时间不可变的新日期/时间。数一数这需要多少次。这是您的除法答

假设我有一个日期间隔是1年,另一个是3个月


有没有可能把一个除以另一个,得到一个4的答案,也就是说,在一年的时间间隔内有4个3个月的时间间隔?

日期不容易进行数学运算。我们可以做加法和减法,仅此而已。乘法没有什么意义(1个月乘以12个月=1平方年?),但除法可以理解为“有多少间隔?”可以通过重复减法实现


为现在的
创建一个
DateTimeImmutable
<代码>添加
尝试对其执行除法的第一个间隔。然后,
减去第二个间隔,直到获得小于(或等于)原始
日期时间不可变的新日期/时间。数一数这需要多少次。这是您的除法答案。

您可以尝试将
日期间隔
转换为秒,并将其除法:

$dateInterval1     = new DateInterval('P1Y');
$dateInterval2     = new DateInterval('P3M');
$dateInterval1Secs = date_create('@0')->add($dateInterval1)->getTimestamp();
$dateInterval2Secs = date_create('@0')->add($dateInterval2)->getTimestamp();

var_dump($dateInterval1Secs / $dateInterval2Secs);
当然,这是非常精确的,并且该代码输出
4.0555556


直接从

转换为秒否,因为
日期间隔
是一个对象。根据答案,类似这样的东西可能会有所帮助


查看问题:您希望
1个月除以7天得到什么回报?可能有办法做到这一点。你能举2到3个你想要实现的例子吗?示例:var$datainterval=4$月=3,结果=4。@CarlosR我想你的意思是“实现”而不是“归档”;D
$y = new DateTime('@0');
$x = new DateTime('@0');
$secondsOfYear = $y->add(new DateInterval('P1Y'))->getTimestamp();
$secondsOfThreeMonths = $x->add(new DateInterval('P3M'))->getTimestamp();

print_r([$secondsOfYear,$secondsOfThreeMonths,(int)($secondsOfYear/$secondsOfThreeMonths)]);
// output
Array
(
    [0] => 31536000
    [1] => 7776000
    [2] => 4
)