そのための関数としてdate(),strftime(),gmstrftime()を考えましたが、
これらの関数は時刻を扱う関数であるため、24時間になると0時間となってしまいます。
この問題を解決する方法として、自作関数を作成するという方法がありますが、
もし存在するならば標準関数を利用したいと思います。
秒数を「時間:分:秒」の型に変換する関数で、24時間以上の値も変換できる標準関数が
あるかどうかを教えて下さい。宜しくお願いします。
標準関数は日付と時刻関連の関数用に定義されている書式に従ってますので、残念ながらお望みの関数は存在していません
http://www.php.net/manual/ja/datetime.formats.php
関数は存在しませんが、下記のような簡単な式(数値は適当です)で実現できます
自作関数にするかどうかは利用頻度次第といったところでしょう
<?php $a = 25 * 3600 + 2450; echo floor($a / 3600) . gmdate(":i:s", $a);
そのような標準関数はないので自作しましょう。
そもそも24時間以上はどう表現したいんでしょうか?50時間30分5秒とか?2日6時間50分5秒で良いならdateやstrftime等の標準関数でも可能かもしれないが0日とか0時間を削る処理が必要ならやはり自作関数を作ることになる。
回答、ありがとうございます。
24時間以上の値も変換できる標準関数があるかどうか
ありません。
また、date(),strftime(),gmstrftime()は、ご承知のように、「日時」を表示するものですので、秒数を時分秒に変換するには適しません。大多数のPHP処理系では0時0分0秒から始まるUNIX TIMEからスタートするので見かけ上、問題は生じませんが、万が一、これ以外のスタート時間を持つ処理系では正常に動作しないことになるからです。
どのような用途でご利用になるかは存じませんが、仕様書にある以外の使い方には十分な注意が必要です。
やはりユーザー関数として用意するのが無難かと存じます。
参考として、秒数を配列(時,分,秒)に変換する関数の例を以下に掲げます。
<?php //秒->array(時,分,秒) function hms($sec) { $ss = $sec % 60; $mm = (int)($sec / 60) % 60; $hh = (int)($sec / (60 * 60)); return array($hh, $mm, $ss); } list($hh, $mm, $ss) = hms(25 * 3600 + 26 * 60 + 27); printf("%d:%02d:%02d", $hh, $mm, $ss); ?>
回答、ありがとうございます。
標準関数は日付と時刻関連の関数用に定義されている書式に従ってますので、残念ながらお望みの関数は存在していません
http://www.php.net/manual/ja/datetime.formats.php
関数は存在しませんが、下記のような簡単な式(数値は適当です)で実現できます
自作関数にするかどうかは利用頻度次第といったところでしょう
<?php $a = 25 * 3600 + 2450; echo floor($a / 3600) . gmdate(":i:s", $a);
回答、ありがとうございます。
回答、ありがとうございます。