2013-10-29 88 views
0

似乎有很多信息將時間段轉換爲時間段,但不是相反的方式。PHP將時間轉換爲時間段

我需要做的一個例子是將120分鐘轉換爲P0DT2H0M0S。 和13:10到P0DT13H10M0S中。 並進入PT2H0M0S 120分鐘。

任何快速簡單的方法來做到這一點?

+1

我會使用日期/時間函數。獲取當前時間,使用'DateTime :: modify()'修改時間,然後使用'DateTime :: diff()'查找差異,然後您可以輸出所需的格式。 –

回答

1

我相信你所描述的格式是ISO 8601日期/時間格式。 Here's how it describes intervals.

在爲DateInterval類的PHP文件,有人分享的你怎麼可能一個字符串轉換成ISO 8601的面向對象的方法的例子:

http://www.php.net/manual/en/class.dateinterval.php#113415

而這裏是別人的溶液,使用功能性的,而不是面向對象的日期的方法:

https://stackoverflow.com/a/13301472/2119660

+0

Cheerz。看起來我可以用這個工作。 – Rik

0

最簡單的方法,來獲得ISO-8601的時間間隔持續時間,與方法createFromDateString

使用:

echo getISO8601duration_withZeros("3 year 20 day 15 minute"); # P3Y0M20DT0H15M0S 
echo getISO8601duration_withZeros("1 hour 120 minutes");  # P0Y0M0DT1H120M0S 
echo getISO8601duration_withZeros("7 year 5 month 3 day"); # P7Y5M3DT0H0M0S 

# 13:10 example 
$dt = new DateTime('13:10'); 
$interval_spec = "{$dt->format('H')} hour {$dt->format('i')} minute"; 
echo getISO8601duration_withZeros($interval_spec);   # P0Y0M0DT13H10M0S 

功能:

function getISO8601duration_withZeros($interval_spec) { 
    $interval = DateInterval::createFromDateString($interval_spec); 
    return $interval->format('P%yY%mM%dDT%hH%iM%sS'); 
} 

演示: