【问题标题】:How to turn HH:MM:SS:MS into just seconds? [duplicate]如何将 HH:MM:SS:MS 变成几秒钟? [复制]
【发布时间】:2015-10-08 04:33:30
【问题描述】:

我目前正在从 ffmpeg 获取 mp3 文件的长度,这会导致 00:03:50.76 这样的时间,我需要将其转换为不含毫秒的总秒数。

所以上面是 230 秒。正则表达式是否足以满足此要求?

【问题讨论】:

  • 几乎,但是毫秒有问题
  • 这个问题虽然很老,但实际上并不是重复的——链接的 SO 帖子和解决方案不包括毫秒的处理时间。 stackoverflow.com/questions/4834202/…

标签: php regex


【解决方案1】:

使用这个:

$res = "00:04:12.44";
$ex = explode(".", $res);
$res = $ex[0];
$secs = strtotime("01.01.1970 " . $res);

或者 - 见 Sven 的评论:

$res = "00:03:50.76";
$ex = explode(".", $res);
$res = $ex[0];
$ex = explode(":", $res);
$secs = $ex[0] * 3600 + $ex[1] * 60 + $ex[2]; // 230 secs

【讨论】:

  • 这可行,但它似乎将秒数四舍五入到最接近的分钟数。这是我得到的,左边是秒,右边是 HH:MM:SS:MS dl.dropboxusercontent.com/u/4331988/ShareX/2015/07/…
  • 没关系,$ex[0] 应该是 $ex[2]。谢谢!
  • 对不起 :D 我改了 - 这个解决方案更简单。
  • 这是一个危险的解决方案,因为strtotime() 的返回值取决于当前设置的时区。不将此设置为 UTC 将产生错误的结果。它也不会工作 25 小时或更长时间。
  • @Sven:谢谢!我也会添加其他解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 2023-01-11
  • 2014-08-07
  • 2021-07-29
相关资源
最近更新 更多