Pegar todas as datas de um dia da semana

1,478 views
Skip to first unread message

Lasaro

unread,
Nov 21, 2012, 8:32:02 AM11/21/12
to ph...@googlegroups.com, php-b...@googlegroups.com
Bom dia!

Amigos,

Preciso pegar todas as datas de um dia da semana.
Por ex.: todas as datas que seja segunda-feira do mês.


Lásaro Carvalho - Fone: 21 7123-6930
Site: www.lasarocarvalho.com.br

Antes de imprimir, pense em sua responsabilidade e compromisso com o meio ambiente.


Jeferson Inacio

unread,
Nov 21, 2012, 10:36:48 AM11/21/12
to ph...@googlegroups.com
testei isso e funcionou:

echo date('d/m/Y - l', strtotime('first monday of november'));  //primeiro monday
echo date('d/m/Y - l', strtotime('second monday of november')); //segundo monday
e assim vai



--
Você recebeu esta mensagem porque está inscrito no grupo "PHP MG" no grupos do Google.
Site oficial do grupo: http://www.phpmg.com
Para postar neste grupo, envie um e-mail para ph...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para phpmg-un...@googlegroups.com
Regras da lista: http://groups.google.com/group/phpmg/web/regras-da-lista
Para ver mais opções, acesse http://groups.google.com/group/phpmg



--
-

Jeferson Inácio Siqueira da Silva e Silva  - Desenvolvedor Web
PHP - Javascript - Jquery - Ajax - MySql - Tableless
(31) 8316-7782

Gervasio de Souza Lemos

unread,
Nov 21, 2012, 11:46:38 AM11/21/12
to ph...@googlegroups.com
<?
function dias($dia_semana, $mes, $ano) {
$Date = new DateTime();
$dias = cal_days_in_month(CAL_GREGORIAN, $mes, $ano);
  for ($dia = 0; $dia <= $dias; $dia++) {
  $Date->setDate( $ano, $mes, $dia );
     if ($Date->format( "w" ) == $dia_semana) {
        $datas[] = $dia."/".$mes."/".$ano;
     }
  }
  return $datas;
}

// Exemplo de uso
// Quintas-feiras no mês de novembro/2012
print_r(dias("4","11","2012"));

// Quantidade de Quintas-feiras no mês de novembro/2012
echo count(dias("4","11","2012"));

// Ultima Quinta-feira do mês de novembro/2012
echo end(dias("4","11","2012"));


// 4 = dia da semana pesquisado
// 0 = Domingo a 6 = Sábado

// 11 = Mes do ano a ser pesquisado com 2 digitos
// 2012 = Ano com 4 digitos
// A função gera uma matriz (datas) com as datas pesquisadas.
?>

Lasaro

unread,
Nov 21, 2012, 12:28:53 PM11/21/12
to ph...@googlegroups.com
Achei bem mais simples esta sua função, e como faria na mudança de ano?
Para pegar os dias referentes ao ano seguinte?

Em 21 de novembro de 2012 13:36, Jeferson Inacio <guitar...@gmail.com> escreveu:

Robson Cesar Tomas

unread,
Nov 21, 2012, 1:05:23 PM11/21/12
to phpmg
Amigo eu tenho um script que faz isso mais automático.
Veja se te serve.

Exemplo:
//Achar segundas feiras entre 01/12/2012 ate 31/12/2012

$mes_ini = 12;
$dia_ini = 1;
$ano_ini = 2012;

$mes_fim = 12;
$dia_fim = 31;
$ano_fim = 2012;

$dini = mktime(0,0,0,$mes_ini,$dia_ini,$ano_ini); // timestamp da data inicial
$dfim = mktime(0,0,0,$mes_fim,$dia_fim,$ano_fim); // timestamp da data final

while($dini <= $dfim)//enquanto uma data for inferior a outra
{      
   $dt = date("d/m/Y",$dini);//convertendo a data no formato dia/mes/ano
   $diasemana = date("w", $dini);   
   
   if($diasemana == "1"){ // [0 Domingo] - [1 Segunda] - [2 Terca] - [3 Quarta] - [4 Quinta] - [5 Sexta] - [6 Sabado]
       echo $diasemana." - ".$dt."<br>"; //exibindo a data se for segunda feira      
   }
   
   $dini += 86400; // adicionando mais 1 dia (em segundos) na data inicial
}

Espero que te ajude.

Robson


Em 21 de novembro de 2012 13:36, Jeferson Inacio <guitar...@gmail.com> escreveu:

Jeferson Inacio

unread,
Nov 21, 2012, 7:08:29 PM11/21/12
to ph...@googlegroups.com
Estou sem ter como testar agora, mas acredito que para pegar o ano também seja só usar
first monday of november of 2013
Reply all
Reply to author
Forward
0 new messages