Php 如何在HH:MM:SS中获取当前日期时间和时间戳值之间的时差

Php 如何在HH:MM:SS中获取当前日期时间和时间戳值之间的时差,php,mysql,date,datetime,timer,Php,Mysql,Date,Datetime,Timer,我想要的很简单,我的mysql数据库中有时间戳,记录日期和时间数据寄存器。我想要的是计算时间戳和当前时间之间的时间差,然后从3小时中减去,以hh:mm:ss格式计算剩余时间,请有人帮忙。您应该在查询中使用以下部分: SELECT TIME_FORMAT(SEC_TO_TIME(AVG(TIMESTAMPDIFF(SECOND, NOW(), column_with_date_to_compare))), '%H:%i') 如果您不希望得到平均值,但希望得到每行的结果(或者您只有一行要检查)(

我想要的很简单,我的mysql数据库中有时间戳,记录日期和时间数据寄存器。我想要的是计算时间戳和当前时间之间的时间差,然后从3小时中减去,以hh:mm:ss格式计算剩余时间,请有人帮忙。

您应该在查询中使用以下部分:

SELECT TIME_FORMAT(SEC_TO_TIME(AVG(TIMESTAMPDIFF(SECOND, NOW(), column_with_date_to_compare))), '%H:%i') 
如果您不希望得到平均值,但希望得到每行的结果(或者您只有一行要检查)(或者使用GROUP BY[某物]),则必须跳过平均值部分

“然后从3小时中减去”部分,我不明白。您只想显示时间少于3小时的记录吗?只需使用WHERE TIME(记录到check)>(NOW()-10800)


如果您想添加、计算或做其他事情来影响结果,只需在秒到秒时间之前进行,您可以在那里进行计算(秒)。

我将您的问题解释为如何计算从数据库中存储的日期时间开始的3小时内剩余的时间,以HH:MM:SS格式显示…

我通常发现在php中操作日期/时间比在SQL查询中操作日期/时间更容易。因此,我的方法是:

  • 从数据库中读取字符串
  • 将它们转换为unix时间戳(即 自给定纪元以来经过的秒数)
  • 用数学方法操作(即加上3小时,减去当前时间)
  • 最后,将结果转换回所选时间的日期/时间 格式
假设已从数据库中读取$start_str

$start_str = '08-03-2017 11:10:00';
$start_ts = strtotime("$start_str");
$end_ts = $start_ts + (3 * 60 * 60);
$now_ts = strtotime('NOW');
$remaining_ts = $end_ts - $now_ts;
$remaining_str = ($remaining_ts > 0)? sprintf('%02d:%02d:%02d', ($remaining_ts/3600),($remaining_ts/60%60), $remaining_ts%60) : "None, time's up";

echo ($start_str.'|'.$start_ts.'|'.$end_ts.'|'.$now_ts.'|'.$remaining_ts.'|'.$remaining_str);
示例…
2017年3月8日11:10:00 | 1488971400 | 1488982200 | 1488983863 |-1663 |无,时间到了
2017年3月8日14:30:00 | 1488983400 | 1488994200 | 1488983982 | 10218 |02:50:18


很明显,实际上你只对最后一个字段感兴趣,但其他字段会显示你在玩什么。

谢谢,是的,我想显示不到3小时的记录时间。那么我该怎么做呢?我想你是在问如何计算从数据库中存储的日期时间开始的3小时内的剩余时间,以HH:MM:SS格式显示。。。如果是,请看下面我的答案,如果不是,请重新表述你的问题。那么我如何使这个功能发挥作用?我如何使这个$start_str='08-03-2017 11:10:00';从我的数据库时间戳中获取时间我的答案中的代码是概念性的,目的是让您了解如何操作时间戳。您需要包含其他PHP代码才能从数据库中实际读取时间戳值,这将涉及对数据库结构的更深入了解等。好的,我设法让它从数据库时间戳中读取数据,但是输出仍然显示计算出的行。请问我如何仅显示此格式中的剩余时间HH:MM:SS仅。。。请帮忙!!非常感谢,我明白了!!非常感谢你的帮助