1

私はphp.netとstackoverflowで自分の問題を検索しましたが、問題を解決するための良い答えが見つからなかったので、質問することにしました!

私は秒数を持っています:

210

私はそれを00:03:30に変換します:

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

しかし、どうすれば回答を 3m30s または 3min30secs のようにフォーマットできますか?

結果を展開して変数と連結することでこの変換を行うことができると思いますが、それが最善の解決策であるかどうかはわかりません...

$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;

誰でも私を助けることができますか?ありがとう。

4

7 に答える 7

2
echo ltrim(date("H", 210), "0")." hours, ".
     ltrim(date('i', 210), "0")." min, ".
     ltrim(date('s', 210), "0")." secs";
于 2013-06-10T16:05:40.487 に答える
1

gmdate 内で文字列をフォーマットできます。印刷したい文字をエスケープするだけです。

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

出力:

03m 30s
于 2013-06-10T16:06:10.550 に答える
1

date()のように動作しprintf()ます。値に置き換えられるメタ文字の定義済みセットを含むフォーマット文字列を渡します。フォーマット文字列には、メタ文字だけでなく、あらゆるコンテンツを含めることができることに注意してください。マニュアルページでもこれについて説明しています。以下を使用できます。

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()です。

于 2013-06-10T16:00:23.313 に答える
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';
于 2013-06-10T16:11:36.453 に答える
0
echo ltrim(date("H", 210), "0")." hours, ".
     ltrim(date('i', 210), "0")." min, ".
     ltrim(date('s', 210), "0")." secs";

オレンジピルに感謝!

于 2013-06-10T16:41:10.090 に答える
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
于 2013-06-10T16:28:50.207 に答える
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);

それが私が考えることができる最良の方法でした。

于 2013-06-10T16:08:39.187 に答える