【问题标题】:What is the best way for subtracting dates to see what time is left in php?减去日期以查看php中剩余时间的最佳方法是什么?
【发布时间】:2013-07-16 21:37:46
【问题描述】:

减去日期以查看某个固定日期事件的剩余时间的最佳方法是什么?例如,我想显示 2013 年 10 月 14 日某个遥远的未来事件还剩多少天。

好的

$now=strtotime(date("Y-m-d"));
$fix=strtotime(date("2013-10-14"));
$left=$fix-$now;
$left=date('d', $left);
echo "There are ".$left." days left";

问题是:它显示还剩 01 天。我认为我没有将时间戳格式化为数据格式。我对吗?

【问题讨论】:

  • 要求代码的问题必须证明对正在解决的问题有最低限度的了解。包括尝试的解决方案、为什么它们不起作用以及预期的结果。
  • 最好的方法是使用 DateTime 和 DateTimeInterval。在 php.net 上查找它们,以及如何使用它们的示例。

标签: php


【解决方案1】:

按照 Niklas 的说法,您可以将时间转换为字符串。您的问题是$left=date('d', $left) 行。 date 中的 d 返回月份中的日期,并且必须是介于 1 和 31 之间的值。

您可以仅以秒为单位获得值,然后使用一些数学运算来获得正确的天数,如下所示:

$now=strtotime(date("Y-m-d"));
$fix=strtotime(date("2013-10-14"));
$secondsLeft=$fix-$now;
$daysLeft = $secondsLeft / 24 / 60 / 60;
echo "There are ".$daysLeft." days left.";

输出“还有 89 天”。 7 月 17 日加上 89 天确实等于 10 月 14 日。

【讨论】:

  • @N.B.那么请提供另一种解决方案,而不是仅仅投反对票。
  • 这是一个糟糕的答案,我不同意您的主观意见。这不是最好的方法,也不是最短的方法,也不是最全面的方法。它基本上是在重新发明轮子。如果您对正确的方法感兴趣 - php.net + DateTime + DateTimeInterval。此外,它还允许您根据用户的时区正确格式化输出。使用这些手动计算并没有考虑 DST(如果适用),所以如果我们严格地说这段代码是否会产生不正确的结果 - 它可以。
  • @N.B.要“显示 2013 年 10 月 14 日某个遥远的未来事件还剩多少天”,这就行了。这不是主观的;我只是更正了给出的代码。
  • 如果您认为您的代码中没有错误,那么我将留给您。不过,你的答案是不正确的。
  • @N.B.我并没有说我的代码中没有错误,如果有,请更正它们,或者至少自己提供解决方案。看来我的答案几乎与 natttan 最终使用的答案完全匹配,他的“谢谢!!!”评论here,这意味着它必须对他有用,因此是正确的。
猜你喜欢
  • 2013-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多