Php 当秒小于或等于60秒时,以1 0显示时间

Php 当秒小于或等于60秒时,以1 0显示时间,php,datetime,Php,Datetime,我正在显示视频,我想显示持续时间。我正在使用以下命令: echo ltrim(date('i:s', $vduration), '0') //result 5:40 但是,如果视频只有40秒。这个公式行不通。它表明 :40 基本上,如果视频小于60秒,它应该只显示1个零(而不是2个),如下所示: 0:40 是否有一个神奇的公式,或者我是否需要使用条件来检查是否小于或等于60秒?使用printf(),而不是date() $minutes = date('i', $vduration); $

我正在显示视频,我想显示持续时间。我正在使用以下命令:

echo ltrim(date('i:s', $vduration), '0')

//result
5:40
但是,如果视频只有40秒。这个公式行不通。它表明

:40
基本上,如果视频小于60秒,它应该只显示1个零(而不是2个),如下所示:

0:40
是否有一个神奇的公式,或者我是否需要使用条件来检查是否小于或等于60秒?

使用
printf()
,而不是
date()

$minutes = date('i', $vduration);
$seconds = date('s', $vduration);
printf("%d:%02d", $minutes, $seconds);
%d
将格式化一个不带前导零的数字,
%02d
将格式化一个带前导零的两位数字。

使用
printf()
而不是
日期()

$minutes = date('i', $vduration);
$seconds = date('s', $vduration);
printf("%d:%02d", $minutes, $seconds);

%d
将格式化一个没有前导零的数字,
%02d
将格式化一个有前导零的两位数字。

日期不适合表示时间间隔。DateInterval类更适合。也可以表示不带前导零的分钟数

//example to create a date interval
$timeStart = date_create_from_format('!','');
$timeEnd = date_create_from_format('!i:s','00:07');

$interval = $timeStart->diff($timeEnd);

//output
echo $interval->format('%i:%S');  //0:07
如果给定了分和秒,还可以直接创建日期间隔

$minute= 1;
$second = 40;
$interval = new DateInterval('PT'.$minute.'M'.$second.'S');

日期不适合表示时间间隔。DateInterval类更适合。也可以表示不带前导零的分钟数

//example to create a date interval
$timeStart = date_create_from_format('!','');
$timeEnd = date_create_from_format('!i:s','00:07');

$interval = $timeStart->diff($timeEnd);

//output
echo $interval->format('%i:%S');  //0:07
如果给定了分和秒,还可以直接创建日期间隔

$minute= 1;
$second = 40;
$interval = new DateInterval('PT'.$minute.'M'.$second.'S');

你知道ltrim正在做什么吗@艾伦,我想他知道为什么这样不行,问题是怎么做他想做的。啊,我明白了,对不起。我会将
ltrim
替换为
str_replace
以将“00:”替换为“0:”,即
str_replace('00:','0:',date('I:s',$vduration))你知道ltrim正在做什么吗@艾伦,我想他知道为什么这样不行,问题是怎么做他想做的。啊,我明白了,对不起。我会将
ltrim
替换为
str_replace
以将“00:”替换为“0:”,即
str_replace('00:','0:',date('I:s',$vduration))