【问题标题】:Subtracting time PHP减去时间 PHP
【发布时间】:2017-03-10 21:45:01
【问题描述】:

我在 PHP 中减去时间时遇到问题。

我的时间是:

$row['exp'] = 2017-03-31

和日期('Y-m-d') = 2017-03-10(今天)

$datetime1 = strtotime($row['exp']);
$datetime2 = strtotime(date('Y-m-d'));
$secs = $datetime1 - $datetime2;// == <seconds between the two times>
$days = $secs / 86400;
echo $days;

我的结果是:

36520.958333333333

【问题讨论】:

  • 除了下面的答案之外,如果您要处理时间和日期,请查看“碳” - carbon.nesbot.com/docs
  • @keaner 谢谢,这很有趣!
  • 没问题,我用它分配,效果很好
  • 在您发布一个名为减去时间 PHP 的问题之前。您应该在 SO 的搜索框中搜索这些关键字(如果不是主要搜索引擎)。 stackoverflow.com/search?q=Subtracting+time+PHPpagespages 个结果,请在发布新问题之前进行研究,因为很可能已经有人提出并回答了。跨度>

标签: php html date strtotime


【解决方案1】:

改用 PHP DateTime 类,它具有内置函数,例如 DateTime::diff,这似乎正是您要寻找的。 DateTime 对象也更容易使用。

$today = new DateTime('today');
$date = new DateTime("2017-03-31");

echo $today->diff($date)->d; // 21

只需将您的$row['exp'] 作为$date 的参数传递,这样您就可以得到

$date = new DateTime($row['exp']);

虽然,我无法使用您的给定输入重现您的问题,this live demo 输出“20.958333333333”(这是正确的,您只需要ceil() 它)。

Live demo

参考文献

【讨论】:

  • 是的,这个demo 显示了您的代码的预期结果,所以我在想您的$row['exp'] 可能不是您认为的值?我会开始研究这一点,因为到目前为止您提供的代码和信息是有效的。
  • 顺便说一句,如果日期正好在 1 年之后,您的答案将不起作用。
  • 那是因为天的偏移量是0,而年的偏移量是1。如果你这样做$today-&gt;diff($date)-&gt;format('%a days');你应该得到预期的结果。
猜你喜欢
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-04
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多