$final_time_saving
という変数がありますが、これはほんの数分、たとえば250分です。
この形式のPHPを使用して、その分数を時間と分に変換するにはどうすればよいですか:
4 hours 10 minutes
<?php
function convertToHoursMins($time, $format = '%02d:%02d') {
if ($time < 1) {
return;
}
$hours = floor($time / 60);
$minutes = ($time % 60);
return sprintf($format, $hours, $minutes);
}
echo convertToHoursMins(250, '%02d hours %02d minutes'); // should output 4 hours 17 minutes
echo date('H:i', mktime(0,257));
$hours = floor($final_time_saving / 60);
$minutes = $final_time_saving % 60;
@Martin Beanの答えは完全に正しいですが、私の観点では、通常のユーザーがWebサイト(Webシステム)に期待するものに合うように、リファクタリングが必要です。
分が10未満の場合、先行ゼロを追加する必要があると思います。
例:10:1ではなく10:01
0:00が24:00よりも優れているため、$time = 0
を受け入れるようにコードを変更しました。
もう1つ-$time
が1439よりも大きい場合はありません。これは23:59で、次の値は単に0:00です。
function convertToHoursMins($time, $format = '%d:%s') {
settype($time, 'integer');
if ($time < 0 || $time >= 1440) {
return;
}
$hours = floor($time/60);
$minutes = $time%60;
if ($minutes < 10) {
$minutes = '0' . $minutes;
}
return sprintf($format, $hours, $minutes);
}
$t = 250;
$h = floor($t/60) ? floor($t/60) .' hours' : '';
$m = $t%60 ? $t%60 .' minutes' : '';
echo $h && $m ? $h.' and '.$m : $h.$m;
4時間10分
古いトピックを取り上げて申し訳ありませんが、これらの回答の1つからいくつかのコードを使用しました。私はそれがどれほど簡単だったかに驚きました。私が欲しかったのは、08:30として返される510分なので、これがコードの動作です。
function tm($nm, $lZ = true){ //tm = to military (time), lZ = leading zero (if true it returns 510 as 08:30, if false 8:30
$mins = $nm % 60;
if($mins == 0) $mins = "0$mins"; //adds a zero, so it doesn't return 08:0, but 08:00
$hour = floor($nm / 60);
if($lZ){
if($hour < 10) return "0$hour:$mins";
}
return "$hour:$mins";
}
関数を頻繁に使用するため、短い変数名を使用します。
最も簡単な方法は次のとおりです。
gmdate('H:i', $numberOfSeconds * 60)
@Martin_Beanと@Mihail Velikovの回答に感謝します。私は彼らの回答スニペットを取り、チェックのためにいくつかの修正を加えました。
時間のみが使用可能で、分値が空の場合、時間のみが表示されます。
分のみが使用可能で、時間の値が空の場合のみ同じで、分のみが表示されます。
分= 60の場合、1時間と表示されます。分= 1の場合も同じで、出力は1分になります。
変更および編集を歓迎します。ありがとう。これがコードです。
関数convertToHoursMins($ time){
$hours = floor($time / 60);
$minutes = ($time % 60);
if($minutes == 0){
if($hours == 1){
$output_format = '%02d hour ';
}else{
$output_format = '%02d hours ';
}
$hoursToMinutes = sprintf($output_format, $hours);
}else if($hours == 0){
if ($minutes < 10) {
$minutes = '0' . $minutes;
}
if($minutes == 1){
$output_format = ' %02d minute ';
}else{
$output_format = ' %02d minutes ';
}
$hoursToMinutes = sprintf($output_format, $minutes);
}else {
if($hours == 1){
$output_format = '%02d hour %02d minutes';
}else{
$output_format = '%02d hours %02d minutes';
}
$hoursToMinutes = sprintf($output_format, $hours, $minutes);
}
return $hoursToMinutes;
}`
次のような場合に備えて:
echo date('G \h\o\u\r\s i \m\i\n\u\t\e\s', mktime(0, 90)); //will return 1 hours 30 minutes
echo date('G \j\a\m i \m\e\n\i\t', mktime(0, 90)); //will return 1 jam 30 menit
function hour_min($minutes){// Total
if($minutes <= 0) return '00 Hours 00 Minutes';
else
return sprintf("%02d",floor($minutes / 60)).' Hours '.sprintf("%02d",str_pad(($minutes % 60), 2, "0", STR_PAD_LEFT)). " Minutes";
}
echo hour_min(250); //Function Call will return value : 04 Hours 10 Minutes
$m = 250;
$extraIntH = intval($m/60);
$extraIntHs = ($m/60); // float value
$whole = floor($extraIntHs); // return int value 1
$fraction = $extraIntHs - $whole; // Total - int = . decimal value
$extraIntHss = ($fraction*60);
$TotalHoursAndMinutesString = $extraIntH."h ".$extraIntHss."m";