Jump to content

função php para imprimir datas num periodo


Hercles
 Share

Recommended Posts

isso é uma questão mais de (my)SQL doque de php...

SELECT * FROM `table` WHERE `coluna_data` BETWEEN "03-02-2014" AND "05-07-2014" ORDER BY `coluna_data` ASC;

ou

SELECT * FROM `table` WHERE `coluna_data` >= "03-02-2014" AND `coluna_data` <= "05-07-2014" ORDER BY `coluna_data` ASC;
Edited by I-NOZex

B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net
Link to comment
Share on other sites

isso é uma questão mais de (my)SQL doque de php...

não sei como tiraste essa conclusão ...

$curstrdate = '2014-03-12';
$targetstedate = '2014-04-15';

$curdate = strtotime($curstrdate);
$targetdate = strtotime($targetstedate);

$curday = date("N", $curdate);

if ($curday == 1) {
   $advance = 0;
   $jump = 2;
} else if ($curday < 3) {
   $advance = 0;
   $jump = 5;
} else if ($curday == 3) {
   $advance = 0;
   $jump = 5;
} else {
   $advance = 8 - $curday;
   $jump = 2;
}

$stepdate = strtotime($curstrdate.' +'.$advance.' days');
while ($stepdate < $targetdate) {
   echo date("Y-m-d", $stepdate).' ('.date('N', $stepdate).' >> '.date('l', $stepdate).')<br />';

   $next = date("Y-m-d", $stepdate).' +'.$jump.' days';
   $stepdate = strtotime($next);
   $jump = ($jump == 2) ? 5 : 2;
}
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

não estou conseguindo fazer isto: As datas tem que sair separadas por virgulas e a ultima data com um ponto final.

o código demonstrado apresenta todas as segunda e quartas entre duas datas, logo, como o código está correcto e a questão é somente de apresentação, nem me vou dignificar a responder a esse problema, onde é pretendido "ter a papinha toda feita".

já te arranjei a água e a farinha, já me dei ao trabalho de juntar tudo vigorosamente e colocar num recipiente jeitoso, não querias mais nada que eu agora tivesse de te dar à boquinha ...

  • Vote 1
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

não sei como tiraste essa conclusão ...

$curstrdate = '2014-03-12';
$targetstedate = '2014-04-15';

$curdate = strtotime($curstrdate);
$targetdate = strtotime($targetstedate);

$curday = date("N", $curdate);

if ($curday == 1) {
$advance = 0;
$jump = 2;
} else if ($curday < 3) {
$advance = 0;
$jump = 5;
} else if ($curday == 3) {
$advance = 0;
$jump = 5;
} else {
$advance = 8 - $curday;
$jump = 2;
}

$stepdate = strtotime($curstrdate.' +'.$advance.' days');
while ($stepdate < $targetdate) {
echo date("Y-m-d", $stepdate).' ('.date('N', $stepdate).' >> '.date('l', $stepdate).')<br />';

$next = date("Y-m-d", $stepdate).' +'.$jump.' days';
$stepdate = strtotime($next);
$jump = ($jump == 2) ? 5 : 2;
}

tentei exibir no navegar e não vai... falta <php? ?

Edited by Hercles
Link to comment
Share on other sites

consegui fiz esta função:

<?php
function diaPt($dia)
{
$diasemanapt = array(
'Mon'=>'Seg',
'Tue'=>'Ter',
'Wed'=>'Qua',
'Thu'=>'Qui',
'Fry'=>'Sex',
'Sat'=>'Sabado',
'Sun'=>'Dom');
return ($diasemanapt[$dia]);
}
?>

Ainda não sei como vou fazer para que a ultima data não apareça uma virgula e sim um ponto final. Qua 25-06, Seg 30-06, Qua 02-07. <== ponto final

Link to comment
Share on other sites

<?php
$inicio = strtotime ('03-02-2014);
$fim=strtitime ('05-06-2014);
$segundosdias = 24*60*60;
$strdias = "dias de aula:";

$aux = $inicio;
while ($aux <= $fim) {
   if (date('w', $$aux) == 1){
	 $strDias.=' seg'.date('d/m',$aux). ',';
	 $aux += 2*segundosDias;
  } else if (data ('w',$aux) == 3) {
	 $strDias .= 'qua ' .date ('d/m', $aux).',';
	 $aux+=5=$segundosDias;
  }
}
echo rtrim($strDias, ",").".";
?>
Edited by Hercles
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.