【问题标题】:How to substract dates to see what time is left in php? [closed]如何减去日期以查看php中剩余的时间? [关闭]
【发布时间】:2013-07-15 07:20:00
【问题描述】:

减去日期以查看某个固定日期事件的剩余时间的最佳方法是什么?例如,我想显示 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 天。我认为我没有将时间戳格式化为数据格式。我说的对吗?

【问题讨论】:

  • 修正你的第一个问题,不要用相同的内容制作新问题。
  • 我得到There are 31 days left 作为输出。
  • 这都是一团糟。我编辑了我的第一篇文章,但多亏了一些用户,它被关闭了,它是不可见的。所以,我做了一个新的,但是有人提出了第一个问题,再次,我变得可见,并且出现了重复。你可以看到我编辑了第一个版本,它和这个一样。我会很感激我的一些学分。谢谢。

标签: php


【解决方案1】:

尝试使用DateTimediffformat 方法,例如:

$now = new DateTime();
$then = new DateTime('2013-10-14');
echo $now->diff($then)->format('%d');

见:

http://www.php.net/manual/en/datetime.diff.php

http://www.php.net/manual/en/datetime.format.php

【讨论】:

    【解决方案2】:

    strtotime 为您提供一个以秒为单位的 unix 时间戳。由于 date 需要一个 unix 时间戳,因此您可以看到与纪元的秒数​​差异相关的日期。所以你的代码应该是:

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

    【讨论】:

    • 这给出了89,它应该是88
    • @amalmurali 你的当地时间是几点...你确定不是昨天 :) 。它对我有用。
    【解决方案3】:

    DateTime::diff:

    $now = new DateTime();
    $fix = new DateTime("2013-10-14");
    echo $now->diff($fix)->days.' days left';
    

    【讨论】:

      【解决方案4】:

      您将差异视为绝对时间;如果您在 date() 函数中包含年份,它可能会显示 1970。

      将秒转换为天的最简单方法可能就是除法:

      $now = time();
      $then = strtotime('2013-10-14');
      $seconds_left  = $then-$now;
      $days_left = $seconds_left/60*60*24;
      

      并根据您的需要进行舍入或截断。如需更复杂的操作,请查看DateInterval

      编辑显示获取当前时间比您所做的更简单。

      【讨论】:

      • 不要相信秒来做日期数学,特别是如果你正在编写依赖于秒的东西。它不考虑夏令时或闰秒!
      • 好点,但如果偶尔休息一小时是个问题,增加开销可能不值得。但是,如果这是一个问题,那么这不是最好的方法。
      【解决方案5】:

      您正在寻找date_diff

      $datetime1 = new DateTime('2009-10-11');
      $datetime2 = new DateTime('2009-10-13');
      $interval = $datetime1->diff($datetime2);
      echo $interval->format('%R%a days');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多