Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Вывести всё время в сутках (https://javascript.ru/forum/server/71203-vyvesti-vsjo-vremya-v-sutkakh.html)

DivMan 01.11.2017 21:17

Вывести всё время в сутках
 
Надо вывести время в формате 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 '<br>';
			
			if($i == 59) {
				$hour++;	
			}
		}
		
		$m = 0;
		$m2 = 0;
	}
	
	for($k = 0; $k < 24; $k++) {
		echo foo();
		echo '<br>';
	}

laimas 01.11.2017 21:27

Цитата:

Сообщение от DivMan
Надо вывести время в формате 23:41, я это сделал

И зачем цикл?

Цитата:

Сообщение от DivMan
как можно упростить код?

str_pad

PS. strlen, а не str_pad :)

DivMan 01.11.2017 22:47

Вот так сделал

$noon = '';
	
	$h = 0;
	$m = 0;
	
	while($noon != '23:60') {
	
	for($i = 0; $i < 60; $i++) {
		echo str_pad($h, 2, '0', STR_PAD_LEFT) . ':' . str_pad($m, 2, '0', STR_PAD_LEFT);
		$m++;
		$noon = str_pad($h, 2, '0', STR_PAD_LEFT) . ':' . str_pad($m, 2, '0', STR_PAD_LEFT);
		echo '<br>';
	}
		
		$h++;
		$i=0;
		$m=0;
	}

laimas 01.11.2017 23:18

Если вам нужен период с указанным интервалом, то так:

$start = new DateTime('2017-11-01 00:00');
$end   = new DateTime('2017-11-01 03:00');
$itr   = new DateInterval('PT1M');

foreach(new DatePeriod($start, $itr, $end) as $date){
   echo $date->format('H:i') . '<br>';
}


Часовой пояс GMT +3, время: 05:30.