首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何获取当前日期时间与HH:MM:SS中时间戳值的时间差

如何获取当前日期时间与HH:MM:SS中时间戳值的时间差
EN

Stack Overflow用户
提问于 2017-03-08 21:21:42
回答 2查看 461关注 0票数 0

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

EN

回答 2

Stack Overflow用户

发布于 2017-03-08 22:14:53

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

代码语言:javascript
代码运行次数:0
运行
复制
SELECT TIME_FORMAT(SEC_TO_TIME(AVG(TIMESTAMPDIFF(SECOND, NOW(), column_with_date_to_compare))), '%H:%i') 

如果您不想要平均值而是每行一个结果(或者您只需要检查一行)(或使用GROUP BY某项),则必须跳过AVG部分

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

如果你想添加,计算或做其他事情来影响结果,只需在SEC_TO_TIME之前完成,你可以在那里做数学计算(用秒)。

票数 0
EN

Stack Overflow用户

发布于 2017-03-08 22:45:50

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

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

从database

  • convert中读取字符串到unix时间戳(即从给定的时间戳中经过的秒数)

  • 最后将结果转换回您选择的格式的日期/时间。

假设已经从数据库中读取了$start_str

代码语言:javascript
代码运行次数:0
运行
复制
$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);

举个例子。

08-03-2017 11:10:00|1488971400|1488982200|1488983863|-1663|None,time's up

08-03-2017 14:30:00|1488983400|1488994200|1488983982|10218|02:50:18

显然,在现实中你只对最后一个领域感兴趣,但其他领域会向你展示你在这个过程中玩的是什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42672494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档