【问题标题】:Calculate number of days between two dates with accuracy准确计算两个日期之间的天数
【发布时间】:2014-06-17 22:57:25
【问题描述】:

嗯,这可能是一个石器时代的问题,但是在这里阅读了这么多问题后我感到困惑。

  1. here 指出了一个使用 strtotime() 的简单解决方案,但关于已接受答案的时间变化的最后一条评论让我使用 diff 函数。

  2. 许多链接建议我区分功能,例如Calculate number of hours between 2 dates in PHP

    • 但后来我看到了一个 PHP 错误,当涉及日期的第一个日期时 diff 显示错误的值 (link)。

    • 另外,diff 函数的天数部分在 Windows 平台上总是返回 6015 (link)。

我阅读了更多链接,所有链接都以 diff() 函数结尾。这个问题有可靠的解决方案吗?

注意:我使用的是 PHP 版本 5.3.5

【问题讨论】:

  • 您的 PHP 版本中存在一个错误,这将使处理日期变得困难。您需要升级您的 PHP 版本。一旦你这样做了,就变得微不足道了。
  • @John “错误”存在于 所有 版本的 PHP 中:3v4l.org/LHjKM
  • 我实际上指的是在 5.3.6 中修补的另一个。 (很确定它是第一个in this list under DateTime
  • 看起来你已经做了相当多的研究。不知道为什么这会受到如此严重的反对(除了一般的 Meta 观点认为 PHP 标记将在手推车中下地狱)所以 +1。
  • 伙计们!只有在没有足够的研究时才应该投票,我是否必须粘贴我研究过的问题的所有链接

标签: php date


【解决方案1】:

如果您既不想使用 datediff 也不想使用 strtotime,另一种解决方案是使用 getTimestamp 并计算差异

$datetime1 = new DateTime('13-03-01');
$datetime2 = new DateTime('13-04-01');

$datetime1TS = datetime1->getTimestamp;
$datetime2TS = datetime2->getTimestamp;

$interval = ($datetime2TS - $datetime1TS)/(60*60*24);

但我认为 datediff 更好。

【讨论】:

  • 但是会和strtotime一样,和我第一个提供的链接比较一下,两者都是一样的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-26
  • 2019-09-27
  • 1970-01-01
相关资源
最近更新 更多