【问题标题】:Difference between two PHP times as years, months and days for PHP version 5.2PHP 5.2 版本的年、月和日这两个 PHP 时间之间的差异
【发布时间】:2012-10-08 07:46:08
【问题描述】:

转发:

我浏览了有关此问题的现有问题/答案。这不是一个两面派的问题;我无法从接受的答案中找到可行的解决方案。

我查看的主要问题/答案可以在这里找到: How to calculate the difference between two dates using PHP?

我需要什么:

计算两个日期之间的差异,表示为年、月和日适用于 PHP 版本:5.2

<?php
$current_date = date('d-M-Y');
$future_date = '2012-11-01';
?>

我尝试过的:

  1. 我在网上找到的大多数答案似乎并不准确,因为它们并不准确 闰年因素。
  2. This 高度评价的答案不起作用,因为 DateTime->diff() 是 php 5.3+。
  3. This 接受的答案(即第二个代码块 针对 PHP 5.2) 会解析以下内容:

    数组 ( [y] => 25 [m] => 11 [d] => 7 [h] => 3 [i] => 15 [s] => 19 [invert] => 0 [days] => 9473 ) 数组 ( [y] => 25 [m] => 11 [d] => 7 [h] => 3 [i] => 15 [s] => 19 [invert] => 1 [days ] => 9473)

我不知道是我错误地应用了代码还是只是我不知道如何操作数组。

【问题讨论】:

  • 不要问现在 PHP 5.2 有什么用。询问如何更改PHP版本。
  • 你需要文字差异还是数学差异?如果是数学的,你想使用多少年和月的平均值?
  • @AlixAxel - 我可能会误解你,但这里是所需输出的示例:1 year, 2 months and 3 days
  • 是的,请向主持人强调这一点。这是一项您需要付费的服务。
  • 考虑并行有多个 PHP 版本,以便您可以切换更多差异化,例如当迁移到 PHP 5.3 出现问题时。所以你保持低风险。

标签: php date php-5.2


【解决方案1】:

你在manual page for DateTime::diff()看到这条评论了吗?

【讨论】:

  • 不,我没有注意到手册中的评论,但感谢您引起我的注意。我已将这些函数复制到我的 Web 文档中,并尝试通过在其后粘贴以下代码来调用第一个函数:pastebin.com/twwyET8R
  • 感谢 Alix 的编辑。由于您的代码,我能够将年、月和日作为单独的变量输出。您的“快速解决方案”是否考虑了闰年(或者它甚至首先需要考虑)?
  • @DominorNovus:闰年只是算术方法所必需的。我正在计算文本差异(我们用来知道我们的年龄和生日是什么时候的差异)。
  • 感谢您的解决方案和解释。
  • 此解决方案不正确,因为月份有 28、29、30 或 31 天。
【解决方案2】:

我也在做同样的事情。这可能有效! 首先,您需要创建日期。

$date1=date_create("2012-03-15");
$date2=date_create("2013-03-15");

Here's the manual for that! 然后找到日期之间的差异并打印所需的结果使用这个!

$dif=date_diff($date1,$date2); //Will calculate the difference between two dates.
$days = $dif->days; //Days
$years = round($age/365); //Converting days to years and rounding them up.
$months = $difference/30; // Converting to months.
echo "Days =>".$days;
echo "Years =>".$years;
echo "Months =>".$months;

现在您将得到的答案不会是精确的,因为其中没有计算闰年的方法,但如果精度不是您要寻找的,那么这肯定会奏效!我知道这个问题很久以前就被问过了,但在我的辩护中,我才看到它!

【讨论】:

    猜你喜欢
    • 2014-04-07
    • 2022-10-02
    • 1970-01-01
    • 2014-02-19
    • 2013-07-17
    • 2016-03-22
    • 1970-01-01
    相关资源
    最近更新 更多