Ir para conteúdo

Arquivado

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

LFN

Transformar dia em data com verificação

Recommended Posts

Encontrei código na internet para usar, porém está dando "erro".

$ano = $_POST['atrib4'];
$mes = $_POST['atrib5'];

for($dd=1; $dd<$quantidadedia + 1; $dd++)
{

$u = date("w", mktime(0,0,0,$mes,$dd,$anoo));

switch($diasemana) {
case"0": $diasemana = "Domingo";       break;
case"1": $diasemana = "Segunda-Feira"; break;
case"2": $diasemana = "Terça-Feira";   break;
case"3": $diasemana = "Quarta-Feira";  break;
case"4": $diasemana = "Quinta-Feira";  break;
case"5": $diasemana = "Sexta-Feira";   break;
case"6": $diasemana = "Sábado";        break;
}


}

Janeiro e Fevereiro estão OK.

 

O restante dos meses está tudo errado. O dia não confero com o Switch. Já tentei de tudo. Alguém pode me ajudar. Obrigado.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código acima foi só um exemplo...

$ano = $_POST['atrib4'];
$mes = $_POST['atrib5'];

for($dd=1; $dd<$quantidadedia + 1; $dd++)
{

$diasemana = date("w", mktime(0,0,0,$mes,$dd,$anoo));

switch($diasemana) {
case"0": $diasemana = "Domingo";       break;
case"1": $diasemana = "Segunda-Feira"; break;
case"2": $diasemana = "Terça-Feira";   break;
case"3": $diasemana = "Quarta-Feira";  break;
case"4": $diasemana = "Quinta-Feira";  break;
case"5": $diasemana = "Sexta-Feira";   break;
case"6": $diasemana = "Sábado";        break;
}


}

Então, eu resumi o código acima...

É que estou usando para incluir registros e preciso saber com certeza os dias que são sábado, domingo etc. Pois dependendo do dia é incluido algo diferente...

 

Como eu comentei, o mês de janeiro e fevereiro de 2015 estão perfeitos segundo o código acima. Porém, inexplicavelmente os meses posteriores não estão de acordo com o código acima...Por exemplo, às vezes a ordem ali (que vai de 0=Domingo ao sábado=6) está diferente.

 

Consegui achar a de março. Porém, os meses subsequentes são diferentes também....

 

não queria achar manualmente cada mês, pois não quero limitar ao ano de 2015...

E já inverti a ordem ali do mktime para (d-m-Y) ou (m-d-Y) ou mesmo (Y-m-d) porém não uniformizou...

 

Eu não entendo o porquê dos meses janeiro e fevereiro funcionar corretamente e os outros não...

Compartilhar este post


Link para o post
Compartilhar em outros sites
$diasemana = date("w", mktime(0,0,0,$mes,$dd,$anoo));

Você está usando a variável "$anoo", sendo que o correto seria $ano.

 

//$ano = $_POST['atrib4'];
//$mes = $_POST['atrib5'];


$ano = '2015';
$mes = '08';


$ultimo_dia_mes = date('t', strtotime($ano.'-'.$mes.'-01'));
//echo $ultimo_dia_mes.'<br />';


for($dd=1; $dd<=$ultimo_dia_mes; $dd++)
{


$diasemana = date("w", mktime(0,0,0,$mes,$dd,$ano));


switch($diasemana) {
    case"0": $diasemana = "Domingo";       break;
    case"1": $diasemana = "Segunda-Feira"; break;
    case"2": $diasemana = "Terça-Feira";   break;
    case"3": $diasemana = "Quarta-Feira";  break;
    case"4": $diasemana = "Quinta-Feira";  break;
    case"5": $diasemana = "Sexta-Feira";   break;
    case"6": $diasemana = "Sábado";        break;
    default: $diasemana = 'erro';
}
echo $diasemana.'<br />';


}

Testei aqui e retornou todos os dias da forma correta...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema estava exatamente ai. Obrigado.

 

 

Está funcionando legal agora, mas tenho que por o ano como variável definida:

 

$ano = '2015';

 

porque se eu pegar de um txt não funciona, você sabe me dizer o por quê?

 

$ano = $_POST['txtano'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

dê um print_r($_POST) e veja o que está vindo do formulário...

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.