目前,当您获得youtube持续时间时,您会获得类似PT3M10S
的内容。
下面的代码将其更改为3:10
。然而,我希望只获得SECONDS,因此190
将是输出。
$duration = str_replace(array("PT","M","S"), array("",":",""),$duration);
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);
看这里:
$youtube_duration = $vinfo['duration'];
$interval = new DateInterval(youtube_duration);
$seconds = $interval->h * 3600 + $interval->i * 60 + $interval->s;
您可以尝试使用正则表达式来获取值,然后从那里获取总秒数。像这样:
$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持续时间。