Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.11.2017, 21:17
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Вывести всё время в сутках
Надо вывести время в формате 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>';
	}
Ответить с цитированием
  #2 (permalink)  
Старый 01.11.2017, 21:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

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

PS. strlen, а не str_pad

Последний раз редактировалось laimas, 01.11.2017 в 21:42.
Ответить с цитированием
  #3 (permalink)  
Старый 01.11.2017, 22:47
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

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

$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;
	}
Ответить с цитированием
  #4 (permalink)  
Старый 01.11.2017, 23:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

$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>';
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
new Date - Неверное время SunYang Node.JS 3 27.01.2017 22:18
При нажатии на ссылку раскрываются все div anonimous jQuery 1 09.08.2012 14:49
Почему this всё время указывает на глобалный объект? dump Общие вопросы Javascript 7 21.07.2012 12:26
НЕСКОЛЬКО ЗНАЧЕНИЙ ИЗ INPUT ВЫВЕСТИ ПОСЛЕДОВАТЕЛЬНО Brook Events/DOM/Window 1 20.04.2012 23:32
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37