php 将时间戳转换为秒(2 小时 12 分钟或 2:12:00)
Posted
技术标签:
【中文标题】php 将时间戳转换为秒(2 小时 12 分钟或 2:12:00)【英文标题】:php convert time stamp to seconds (2 hours 12 min or 2:12:00) 【发布时间】:2016-05-22 18:21:28 【问题描述】:您好,我正在尝试将时间戳转换为秒。目前时间戳将以两种形式传输,并希望为其中任何一种做好准备。但是我认为我用我尝试过的方法让自己变得更加困难。
所以例如输入是
1 小时 1 分 1 秒 或 2 小时 2 分 2 秒
我希望最终输出是下面的示例,这样我就可以将该数字转换为秒数:
01:01:01 或 02:02:02
我不知道会是什么情况,它将是通过 url 传递的参数,这是我迄今为止尝试过的,但就像我说的那样,它显示不正确:
$recent_time = htmlspecialchars($_GET["time"]);
$recent_time = preg_replace("/[^0-9,.]/", ":", $recent_time);
$recent_time = preg_replace("/(.)\\1+/", "$1", $recent_time);
echo $recent_time;
如您所见,我用冒号替换所有字母并确保冒号不重复,因此输出将为 xx:xx:xx 但有时输出不准确这里是我将如何翻译输出到秒:
$str_time = preg_replace("/^([\d]1,2)\:([\d]2)$/", "00:$1:$2", $recent_time);
sscanf($str_time, "%d:%d:%d", $hours, $minutes, $seconds);
$time_seconds = $hours * 3600 + $minutes * 60 + $seconds;
$sum_total = $time_seconds + $old_time;
问题在于,如果它只是 min + sec,它不会正确地将其转换为秒。因此,例如时间是 10 分 13 秒,它将输出 10:13:
,但它不会正确地将其转换为秒,因为它不是 00:10:13。我试图截断最后的冒号,但它仍然无法区分分钟/秒/小时
$recent_time = substr_replace($recent_time ,"",-1);
编辑
$converted_time = date('H:i:s',strtotime('$recent_time', strtotime('midnight')));
【问题讨论】:
我们可以假设输入只能是%d hour[s] $d minute[s] %d second[s]
这样的格式吗?
@lolbas 正确,url 参数将仅包含该格式,例如:www.somewebsite.com/info.php/?time=x hour[s] x minute[s] x second[s]
但如果只有 25 秒,它不会是 0 小时 0 分 25 秒,它只会说 www.somewebsite.com/info.php/?time=25 seconds
【参考方案1】:
改用php strtotime函数
date('H:i:s',strtotime('1 hour 1 minute 1 second', strtotime('midnight'))); // 01:01:01
date('H:i:s',strtotime('2 hours 2 minutes 2 seconds', strtotime('midnight'))); // 02:02:02
date('H:i:s',strtotime('10 minutes 13 seconds', strtotime('midnight'))); // 00:10:13
【讨论】:
我去了 php 网站并查找了 phpstrtotime
,它看起来比我一直在做的绝对干净。但我正在学习,我确实尝试过自己学习,但我被卡住了....输出仅显示 17:00:00 我假设它是“午夜”部分。我从this website 'H:i:s' 收集的内容是我希望它采用的格式,这是正确的,我希望它格式的字符串是 '1 小时 1 分 1 秒' 或者在我的情况下是 $recent_time
, 该网站说它的计算应该给出的时间。但它只输出 17:00:00。见编辑
strtotime 使第一个参数相对于第二个参数的时间。说午夜,我们将基准设为 00:00:00。 (没有它,它将是当前时间)。结果,“时间部分”是从字符串产生的时间(和今天的日期,但这并不重要)
感谢您的解释,我编辑的字符串:$converted_time = date('H:i:s',strtotime('$recent_time', strtotime('midnight')));
无效吗?我确实在网站上阅读过,如果您不包含 time(),它将默认为 now
,这就是为什么我们将其设置为午夜的原因。我只是不明白为什么无论输入如何输出都只有17:00:00
从这里删除引号 - strtotime('$recent_time',
呃!!!!天啊。尴尬。我一直在寻找超出我技能的东西,哈哈,谢谢你的耐心和理解。我真心的。我真的很感谢这里的人们以尊重的态度对待那些试图学习的人。谢谢以上是关于php 将时间戳转换为秒(2 小时 12 分钟或 2:12:00)的主要内容,如果未能解决你的问题,请参考以下文章
Python实现ParseDuration-支持解析字符串格式的时间单位,例如将小时或者分钟数转换为秒