如何在3分30秒转换00:03:30

时间:2013-06-10 15:57:46

标签: php date time format

我在php.net和stackoverflow上搜索我的问题,我找不到解决问题的好答案,所以我决定问它!

我有几个秒:

210

我将其转换为 00:03:30

gmdate('H:i:s', 210);

但是我如何格式化我的答案: 3分30秒或3分30秒?

我想我可以通过Exploding我的结果和变量连接来进行这种转换,但我不知道它是否是最好的解决方案......

$part = explode(":", $mytime);
$hours = $part[0];
$mins = $part[1];
$secs = $part[2];

$hoursvar = "h";
$minsvar = "m";
$secsvar = "s";

$timefinal = $hours.$hoursvar.$mins.$minsvar.$secs.$secsvar;

任何人都可以帮助我吗?感谢。

7 个答案:

答案 0 :(得分:2)

echo ltrim(date("H", 210), "0")." hours, ".
     ltrim(date('i', 210), "0")." min, ".
     ltrim(date('s', 210), "0")." secs";

答案 1 :(得分:1)

date()有点像printf()。传递一个格式字符串,其中包含一组已定义的元字符,这些元字符将替换为值。请注意,格式字符串可以包含任何内容,而不仅仅是元字符。 manual page explains this也是{{3}}。您可以使用:

date('i\ms', 210);

您会发现必须将文字(m)转义为它们未被值替换。

我希望你能接受领先的零点:03m30

如果没有,请使用:

$date = date('i\ms', 210);
if(strpos($date, '0') === 0) {
    $date = substr($date, -strlen($date) + 1);
}

或者,更短,谢谢@Orangepill :):

$date = ltrim(date('i\ms', 210), '0');

因为date()已知没有前导零的分钟数没有元字符。

答案 2 :(得分:1)

您可以格式化gmdate中的字符串,只需转义要打印的字符:

$sec = 210;
echo gmdate("i\m s\s", $sec);

输出:

03m 30s

答案 3 :(得分:0)

这很简单,您当前的日期格式为 H:i:s ,并且您希望将其转换为 i:s

所以你做了以下

$date = "00:03:30";
$new_date = date("i_s-",strtotime($date));

由于我们无法在函数中插入字母m和s,我们可以使用 str_replace _ 替换为 m 并替换 - s 所以

$new_date = str_replace("_","m",$new_date);
$new_date = str_replace("-","s",$new_date);

这是我能想到的最佳方式。

答案 4 :(得分:0)

$string_time = '00:03:30';
$int_time = strtotime(date('Y-m-d').' '.$string_time);
echo date('i', $int_time).'m'.date('s', $int_time).'s';

答案 5 :(得分:0)

$seconds = 210;
$date = gmdate("H\h:i\m:s\s", $seconds);
echo preg_replace('/0([0-9])/','$1', $date);

<强>输出

0h:3m:30s

你可以使用gmdate和preg_replace从开头删除0。

或更高级

$seconds = 210;
$date = gmdate("H\h:i\m:s\s", $seconds);
$match = array('/0([0-9])/','/s/','/m\:/','/h\:/');
$replace = array('$1', ' sec ', ' min ', ' hours ');
echo preg_replace($match,$replace, $date);

<强>输出:

0 hours 3 min 30 sec

答案 6 :(得分:0)

echo ltrim(date("H", 210), "0")." hours, ".
     ltrim(date('i', 210), "0")." min, ".
     ltrim(date('s', 210), "0")." secs";

感谢Orangepill!