Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

r.guerra

Gerar hora e minuto dinamicamente

Recommended Posts

fala galera!

to precisando de uma luz para um esquema meu aqui.

seguinte:

tenho uma tabela de dentistas assim:

codigo dentista intervalo

1 fulano 30

2 ciclano 10

3 beltrano 15

o que preciso é gerar na tela uma listagem de 8 as 20hs e nos minutos pegar o intervalo de cada dentista.

ao meu ver acho que a solução é o for(), mas não consigo montar a estrutura correta, alguém tem ideias ai? ficaria tipo assim na tela:

dentista 1

8:00

8:30

9:00

9:30

...... 20:00

dentista 2

8:00

8:10

8:20

8:30

8:40

8:50

9:00

.... 20:00

dentista 3

8:00

8:15

8:30

8:45

9:00

.....20:00

pensei em algo assim: (mas deu errado kkkk)

......

$inter = $obj_dentista_agenda -> intervalo;
for( $h = 8 ; $h <= 20 ; $h ++){
for($m = 0; $m <= $inter; $m+ =$inter){
echo $h . ' : '.$m;
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais fácil trabalhar com DateTime, segue os EXEMPLOS

$add_minutos = 15;
$hora = new DateTime('08:00');
$hora->add(new DateInterval('PT' . $add_minutos . 'M'));
echo $hora->format('H:i'); //08:15

Mas segue com strtotime

$timestamp = strtotime('08:00 + 15 minute');
echo date('H:i:s', $timestamp); //08:15

Agora só montar uma função para fazer o que você quer!

Compartilhar este post


Link para o post
Compartilhar em outros sites

fala Williams,

cara consegui até fazer o script e local, funciona que uma maravilha, mas quando upo para o servidor, não roda.

saberia me dizer o que pode ser?

uso local o php 5.6 e o do servidor é 5.3, mas já alterei para 5.6 o do servidor tambem e não funciona.

Não gera erros. simplismente não printa os horarios. segue o script.

$startHour = '2016-09-29 07:30';
$endHour = '2016-09-29 20:00';
$minutes = 30;
$aindaPossuiIntervalo = true; 
$ultimoIntervalo = null;
while($aindaPossuiIntervalo){
  $time = (is_object($ultimoIntervalo)) ? $ultimoIntervalo : new DateTime($startHour); 
  $time->add(new DateInterval('PT' . $minutes . 'M')); 
  $ultimoIntervalo = $time;
 print $time->format('H:i');
  if(new DateTime($time->format('Y-m-d H:i:s')) >= new DateTime($endHour)){
      $aindaPossuiIntervalo = false;
  }
  }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Habilite os erros

ini_set('display_errors', true);
error_reporting(E_ALL);

http://php.net/manual/pt_BR/function.error-reporting.php

Se tiver usando autoload, coloque \ barra invertida antes das classes nativas

new \DateInterval
new \DateTime

Compartilhar este post


Link para o post
Compartilhar em outros sites

habilitando deu o erro:

Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Sao_Paulo' for 'BRT/-3.0/no DST' instead' in /home/l2cnetco/public_html/software/conectivos/agenda.php:17 Stack trace: #0 /home/l2cnetco/public_html/software/conectivos/agenda.php(17): DateTime->__construct('2016-09-26 08:0...') #1 {main} thrown in /home/l2cnetco/public_html/software/conectivos/agenda.php on line 17

saberia me dizer o motivo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta ler o erro:

It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim ESerra,

mas pergunto se o problema é programação ou na configuração do servidor, pois o pessoal do datacenter fala que é meu codigo e pelo que vi não é.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, o problema é o no seu script, a solução inclusive consta no próprio erro.

You are *required* to use the date.timezone setting or the date_default_timezone_set() function

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu galera!

como sempre o forum todo sendo prestativo!

Resolvi assim:

Na minha index adicionei o seguinte comando no inicial. Visto que no arquivo php.ini não poderia mexer.

if( ! ini_get('date.timezone') )
{
date_default_timezone_set('America/Sao_Paulo');
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.