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:0102: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 网站并查找了 php strtotime,它看起来比我一直在做的绝对干净。但我正在学习,我确实尝试过自己学习,但我被卡住了....输出仅显示 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-支持解析字符串格式的时间单位,例如将小时或者分钟数转换为秒

在php中将分钟转换为秒

使用 Duration 对象在 Java 中将天、分钟、小时转换为秒失败

如何在 Oracle 中将日期截断为秒

将小时和分钟字符串转换为纪元(unix 时间戳)

如何在 SQL Server 中将“XX 天 XX 小时 XX 分钟”转换为秒?