当前位置: 首页 > 知识库问答 >
问题:

将youtube持续时间转换为秒

司徒运锋
2023-03-14

目前,当您获得youtube持续时间时,您会获得类似PT3M10S的内容。

下面的代码将其更改为3:10。然而,我希望只获得SECONDS,因此190将是输出。

$duration = str_replace(array("PT","M","S"), array("",":",""),$duration);

共有3个答案

麹高远
2023-03-14
function covtime($youtube_time) {
    preg_match_all('/(\d+)/', $youtube_time, $parts);
    $h = preg_match('/H/', $youtube_time);
    $m = preg_match('/M/', $youtube_time);
    $s = preg_match('/S/', $youtube_time);
    if ($h && $m && $s) {
        $hours = $parts[0][0];
        $minutes = $parts[0][1];
        $seconds = $parts[0][2];
        if ($minutes < 10) {
            $minutes = '0' . $parts[0][1];
        }
        if ($seconds < 10) {
            $seconds = '0' . $parts[0][2];
        }
        echo $hours . ':' . $minutes . ':' . $seconds;
    } else if ($h && $m) {
        $hours = $parts[0][0];
        $minutes = $parts[0][1];
        $seconds = '00';
        if ($minutes < 10) {
            $minutes = '0' . $parts[0][1];
        }
        echo $hours . ':' . $minutes . ':' . $seconds;
    } else if ($m && $s) {
        $minutes = $parts[0][0];
        $seconds = $parts[0][1];
        if ($seconds < 10) {
            $seconds = '0' . $parts[0][1];
        }
        echo $minutes . ':' . $seconds;
    } else if ($h && $s) {
        $hours = $parts[0][0];
        $minutes = '00';
        $seconds = $parts[0][1];
        if ($seconds < 10) {
            $seconds = '0' . $parts[0][1];
        }
        echo $hours . ':' . $minutes . ':' . $seconds;
    } else if ($h) {
        $hours = $parts[0][0];
        $minutes = '00';
        $seconds = '00';
        echo $hours . ':' . $minutes . ':' . $seconds;
    } else if ($m) {
        $minutes = $parts[0][0];
        $seconds = '00';
        echo $minutes . ':' . $seconds;
    } else if ($s) {
        $minutes = '0';
        $seconds = $parts[0][0];
        if ($seconds < 10) {
            $seconds = '0' . $parts[0][0];
        }
        echo $minutes . ':' . $seconds;
    }
}
echo covtime(PT1H2M3S);
阎京
2023-03-14

看这里:

    $youtube_duration = $vinfo['duration'];
    $interval = new DateInterval(youtube_duration);
    $seconds = $interval->h * 3600 + $interval->i * 60 + $interval->s;
慕承恩
2023-03-14

您可以尝试使用正则表达式来获取值,然后从那里获取总秒数。像这样:

$duration="PT3M10S";
$pattern='/PT(\d+)M(\d+)S/';
preg_match($pattern,$duration,$matches);
$seconds=$matches[1]*60+$matches[2];

该模式将分钟放入第一个组,将秒放入下一个组。调用preg_match()后,$匹配将包含匹配的组。您需要获取组1和2,因为匹配中的组0是完整匹配的文本。在这种情况下是“PT3M10S”。

 类似资料:
  • 我正在寻找一种从“ISO 8601持续时间格式”(P0DT0H0M0S)转换为小时的便捷方法。 到目前为止,我想到了这个: 如您所见,我的方法是将数字拆分并乘以24、1、1/60、1/3600以得到小时。我可以减少代码量吗? 样本数据和所需结果 输入: 'P1DT2H3M44S' (1 天 2 小时 3 分 44 秒) 期望输出: 26.062222222222222 (这是小时)

  • 我在数据库中存储了两个字段,其中一个包含日期时间,另一个包含表示ISO-8601格式的持续时间的字符串(例如“P1MT2H”)。我希望能够将持续时间添加到SQL中的datetime列,似乎我应该能够使用< code>DATE_ADD来完成此操作,但我不知道是否有一种好的方法来将其转换为间隔。如果可能的话,我宁愿不用定义自己的sql函数来解析时间间隔。

  • 问题内容: 我如何最好地将90060(秒)转换为字符串“ 25h 1m”? 目前,我正在使用SQL执行此操作: 但是我不确定这是最方便的方法:-) 我愿意在SQL(不同于我已经在做)或PHP中做到这一点。 编辑: 所需字符串的示例:“ 5m”,“ 40m”,“ 1h 35m”,“ 45h”,“ 46h 12m”。 问题答案: 文档是您的朋友: http://dev.mysql.com/doc/re

  • 我正在尝试获取jQuery addClass 演示问题:在构建演示时遇到了一个奇怪的问题——jQuery函数在我的实际网站上不起作用。不确定这是为什么,但声明它找不到变量“hoverAwayFromWindows”或“hoverOverWindows”——但这没有意义,因为它们是函数,而不是变量。 转换持续时间问题:只要父div悬停在上面,子div就会立即应用“悬停在windows样式上”类,但我

  • 有很多问题询问如何以另一种方式执行此操作(从这种格式转换),但我找不到有关如何在PHP中以ISO 8601持续时间格式输出的任何内容。 所以我有一堆可读格式的持续时间字符串——我想动态地将它们转换成ISO 8601格式,以打印HTML5微数据的持续时间。下面是一些输入字符串的示例,以及它们应该如何格式化 我可以在PHP中将字符串推入间隔对象: 但似乎没有ISO 8601输出选项 我应该如何处理这个

  • 我有ISO8601格式的持续时间值,我将其转换为时间值为整数秒,如下所示: ISO8601格式的持续时间值=“P1Y”。 我将该值存储在“时间-单位-秒”中。因此,当我检索的值将是在int,我想转换回ISO8601持续时间格式,所以我应该得到“P1Y”转换后回来。 有没有快速的方法可以做到这一点?或者我必须把时间的int值转换成float,然后通过某种方法把它转换成ISO8601持续时间。