#php
Надо вывести время в формате 23:41, я это сделал, как можно упростить код?
Из-за того, что PHP 00 превращает в 0, пришлось создавать дополнительные переменные.
$h = 0;
$h2 = 0;
$m = 0;
$m2 = 0;
$hour = 0;
function foo() {
global $hour;
global $h;
global $h2;
global $m;
global $m2;
for($i = 0; $i < 60; $i++) {
if($hour < 10) {
if($m2 < 10) {
echo $h . $hour . ':' . $m . $m2;
$m2++;
}
else {
echo $h . $hour . ':' . $m2;
$m2++;
}
}
else {
if($m2 < 10) {
echo $hour . ':' . $m . $m2;
$m2++;
}
else {
echo $hour . ':' . $m2;
$m2++;
}
}
echo '
';
if($i == 59) {
$hour++;
}
}
$m = 0;
$m2 = 0;
}
for($k = 0; $k < 24; $k++) {
echo foo();
echo '
';
}
Ответы
Ответ 1
если хочется вручную сделать то может как то так попроще? for($i=0; $i< 24*60; $i++){ $h = $i / 60; $m = $i % 60; printf("%02d:%02d\n", $h, $m); } зы: если надо в переменную сохранить, то есть sprintf. Если не нравятся эти функции, то можно строку дополнить до нужной длины с помощью str_pad($h, 2, '0'), например, и т.п.Ответ 2
for($h = 0; $h < 24; $h++){ // 24 часа for($m = 0; $m < 60; $m++){ // по 60 минут echo sprintf('%02d:%02d', $h, $m); } }Ответ 3
Предложу другой вариант - воспользоваться классом DateTime: function getTime($hour, $min, $fmt = "H:i") { $time = new DateTime("$hour:$min"); return $time->format($fmt); } echo getTime(3, 9)."\n"; // 03:09 Плюс в том, что при желании можно сменить формат, например, на 12ч с am/pm echo getTime(13, 58, "h:i a")."\n"; // 01:58 pm
Комментариев нет:
Отправить комментарий