2012-12-27 13 views
6

可能性の重複:
Convert seconds to Hour:Minute:SecondPHP日()時間、分、秒

私は秒に変換する良い方法を見つけるために、すべてのインターネット上で検索してきました数分にする:秒をゼロにすることなく秒。私はすでにthis questionをチェックアウトしましたが、これは私が見つけた唯一のものですが、それらの回答はどれも非常に良く見えません。おそらく、これを達成するための唯一の最良の方法ですが、私は望んでいないでしょう。

私はこれを実行して、先行ゼロなしの分を与えてくれますが、秒を得ることができません。私がこのようにすることを考える唯一の方法は数行の数学をすることですが、これは単純なことのような何かのために非常に多くの作業のように思えます... PHPがなぜそうでないのかわかりませんM:S「tは私がやろうとしていますすべてがHに、ビデオの中で秒数を変換することで編集

intval(gmdate("i:s", $duration)); 

....それはとにかく分と秒で構築されていフォーマット。

+0

'intval()'には何が必要ですか? **なぜあなたはそれを追加しましたか? – zerkms

+0

まあ、それは私の質問では、他のオーバーフローの質問の答えの一つです、それはゼロ、および他のすべてを削除します。 –

+0

それはありません。関数をランダムに適用する前にドキュメントを読んでください:http://php.net/intval – zerkms

答えて

2
implode(
    ':', 
    array_map(
     function($i) { return intval($i, 10); }, 
     explode(':', gmdate('H:i:s', $duration)) 
    ) 
) 

しかし何をについて:ちょうど持ってメートル:sが

preg_replace(
    '~^0:~', 
    '', 
    implode(
     ':', 
     array_map(
      function($i) { return intval($i, 10); }, 
      explode(':', gmdate('H:i:s', $duration)) 
     ) 
    ) 
) 
+0

1行にすべてがあることにうまくやっている:)。 –

+0

ありがとう、これは期待された結果を持っています。 私はこれを尋ねませんでしたが、時間== 0の場合は何も表示せず0を表示しないでください:m:s –

+0

@Dylan Cross:バージョン2を参照 – zerkms

1

gmdateは2番目のパラメータとしてタイムスタンプをとります。 あなたはこのような何かを行う必要があります:あなたは、文字列を取得しているし、再びint型にそれを変換しているよう

echo gmdate("H:i:s", mktime(0, 0, 0, 1, 1, 1998) + $duration); 

INTVALは、すべきではありません。 H:私はあなたに10:40:05を持っています。
ただし、継続時間> 24時間の場合は動作しません。時間== 0は、その後、0を印刷しない場合は

+0

先行ゼロを削除したいのですが、上のコードは削除しません。 –

+0

先頭に0がない場合は、 $ hours = date( "h"、mktime(0、0、1、1、1998)+ $ duration)を使用する必要があります。 $ minutes = intval(date( "i"、mktime(0、0、0、1、1、1998)+ $ duration)); $秒= intval(日付( "s"、mktime(0、0、0、1、1、1998)+ $ duration)); –

+0

私のコードを編集しましたが、gmdateの代わりに日付を使用しなければならないと感じています。それ以外の場合は、サーバーの日付によっては正確ではない可能性があります。 –

2

私は繰り返し、それを記述します。

function duration_to_timestring($duration) 
{ 
     $s = []; 
     if ($duration > 3600) { 
       $s[] = floor($duration/3600); 
       $duration %= 3600; 
     } 
     $s[] = floor($duration/60); 
     $s[] = floor($duration % 60); 

     return join(':', $s); 
} 
+0

これはいいかもしれませんが、先行ゼロを付けずに分と秒を含めます。 –

+1

@DylanCross特権を持つ人だけが、なぜ、書式指定子として使うために有用な文字を使い果たしたのでしょうか? –

関連する問題