2013-04-06 66 views
1

我知道,它应该很容易,但我在PHP中的时间函数有问题。我有一个像“1小时38分钟”的字符串,我想将它转换为分钟数的整数。 任何帮助或者是微不足道的? ;)PHP:时间格式

+0

你尝试过'preg_match'吗? (http://php.net/preg_match) – scones 2013-04-06 16:44:22

+0

数据来自哪里? – Cups 2013-04-06 16:47:56

+0

它来自外部来源 – Bubbleboy 2013-04-06 16:49:00

回答

4

这听起来更像是一个sscanf然后任何时间功能的工作。

事情是这样的:

<?php 

$input = '1 h 38 min'; 
sscanf($input, '%d h %d min', $hours, $minutes); 

$minutes += 60 * $hours; 

echo "total minutes: $minutes\n"; 
+0

谢谢,作品完美:) – Bubbleboy 2013-04-06 16:52:01

+0

如果您需要更多的灵活性,看看[DateInterval :: createFromDateString](http://www.php.net/manual/en/dateinterval.createfromdatestring。 PHP) – 2013-04-06 16:55:27

0

下面是一些代码,更稳健一点比sscanf的和更具体一点,使用时间(以及与旧版本的PHP作品):

$input = '1 d 1 hour 38 min'; 
$usableInput = trim(str_replace(array(' y ', ' m ', ' d ', ' h ', ' s '), array(' years ', ' months ', ' days ', ' hours ', ' seconds '), " $input ")); 
$now = time(); 
$seconds = strtotime("+$usableInput", $now) - $now; 
$minutes = floor($seconds/60);