【问题标题】:Subtracting Time in PHP to get Difference in Seconds [closed]在 PHP 中减去时间以获得秒差 [关闭]
【发布时间】:2012-12-05 22:02:34
【问题描述】:

我想以秒为单位计算时间差。我一直得到 0 作为结果,并想知道是否有人可以帮助我。时间将从数据库中提取。

这是我想要做的一个例子。

$TimeStart = "04:30:45 am";
$TimeEnd = "04:31:46 am";
$Difference = $TimeEnd - $TimeStart . "seconds";

我知道这不是一个非常有插图的例子,我知道它可能不是那么简单。

这是我网站上目前的代码:

$TimeStart = strtotime($VisitsRow['TimeStart']);
$TimeEnd = strtotime($VisitsRow['TimeEnd']);
$TimeDifference = ($TimeEnd - $TimeStart);
if ($VisitsRow['TimeEnd'] == "") {
    $Timeto = "Incomplete";
} else {
    if ($TimeDifference <= 60) {
        $Timeto = "< a minute";
    } else if ($TimeDifference <= 0) {
        $Timeto = "< a second";
    } else {
        $Timeto = round($TimeDifference, 2)." seconds";
    }
    if ($TimeDifference >= 60) {
        $MinutesDiff = $TimeDifference / 60;
        $Timeto = round($MinutesDiff, 2)." minutes";
    }
}

我只是尝试了上面我想要的示例并且得到了一个负数。这就是我需要帮助的原因。

【问题讨论】:

  • 你考虑过使用 DateTime 类吗? php.net/manual/en/book.datetime.php
  • 我也可以,但是当我添加 date($Start____) 时,它不会改变任何东西。当有分钟差异时,我得到一个负数或 0。
  • 我使用了 DateTime 类,但它破坏了页面。
  • 给定示例值,您的代码工作正常。当您“得到负数或 0”时,请告诉我们 $VisitsRow
  • 这是其中之一: 时间开始 15:30:30 pm 时间结束 15:36:59 pm 当我减去这两个时,我得到 -15。

标签: php mysql time subtraction


【解决方案1】:

感谢大家帮我解决这个问题。我的问题是它以 24 小时格式而不是标准格式收集时间。一旦我解决了这个问题,一切都会完美无缺。

【讨论】:

    【解决方案2】:

    strtotime 非常简单:

    $TimeStart = strtotime("04:30:45");
    $TimeEnd = strtotime("04:31:46");
    
    $Difference = ($TimeEnd - $TimeStart) . " seconds";
    

    但是,如果您需要它更加动态,可以通过 SQL 减去两个日期字段:

    SELECT TIMESTAMPDIFF(MINUTE,TimeEnd,TimeStart) AS TimeDifference FROM myTable
    

    (请注意,如果需要,您可以将 MINUTE 更改为另一个时间指标)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      相关资源
      最近更新 更多