Ir para conteúdo
Fórum Script Brasil
  • 0

Trabalhando com DATAS, dividir o ano em semanas, e semanas em dias


marcosfj1

Pergunta

Seguinte galera, preciso fazer um trabalho com datas que é um pouco complicado.

Preciso pegar o ano em que estamos dividir eles em semanas, exemplo

2011 tem 50 semanas

semana 1 - 01/01/2011 a 07/01/2011

E por ai vai ate o final do ano

Eu preciso disso porque, depois o intervalo da semana os dias

01, 02, 03, 04, 05, 06, 07

Vou usar eles para fazer um busca SQL e encontrar valores diarios, tipo:

SELECT valor_total
FROM cliente
WHERE DAYS = $dia
MOUTH = $mes
YEAR = $ano

Sendo assim eu teria que dividir o ano em semanas, e pegar as informações de cada dia e joga-las nas variaveis $dia, $mes, $ano para poder trabalhar com elas na busca, e assim trazer os resultados corretos para cada dia daquela semana.

Meu problema é que:

1º = estou com um pouco de dificuldade na lógica, então me desculpe se não fui muito claro no que quero fazer

2º = preciso achar uma função que primeiro divida o ano nas semanas corretas

3º = dividir aquela semana encontrada em dias, e joga-las nas variaveis

alguém sabe me dar uma luz de por onde comecar?

Obrigado

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

amigo, já viu a funcao date do php?

Lá ela te da varios valores, tais como o dia e nome do dia da semana.

Começe estudando ela, depois você verá que para um mês (maio), começando dia 1 como domingo, a funcao vai ser:

1 + 7 = domingo

8 + 7 = domingo

15+ 7 = domingo

22 + 7 = domingo

29 + 7 = domingo

se domingo > 30, 30 (referente aos dias da semana) - 29 + 7 = domingo do mes 2 (junho) e dia 6.

Ai, você cria uma variavel que divide o ano (12 meses) por 2. Todos os pares são 30 e os impares são 31, exceto fevereiro que é 28 ou 29

Link para o comentário
Compartilhar em outros sites

  • 0

Opa amigo agradeco ter respondido...sinceramente ainda to perdido, mesmo com esta curta explicação que me deu, não consigui etender o calculo a ser feito....mas estou dando um olhada na função date() que me passou, já conhecia ela, mas somente o basico

Com ela eu já vi que da pra pegar quantas semanas tem o ano, porem eu preciso de mais que isso

Achei um exemplo na net, porém esta em ASP e não tenho ideia de como passar para PHP........mas o exemplo mostra exatamente como eu gostaria que fosse

Exemplo

Da forma como esta no exemplo ele mostra o ano dividido em semanas, e de que dia a que dia vai cada semana, que é o q eu quero.

Se puder ser um pouco mais claro quantos aos caminhos q tenho q tomar e a logica a seguir eu agradeceria

Valeu

Link para o comentário
Compartilhar em outros sites

  • 0

Cara o código esta se comportando como eu te flei, mas em asp ^^

traduzindo pro php:

<?

$var_yr = "2006";

$inicio_ano = "1/1/$var_yr";

$final_ano = "31/12/$var_yr";

$semana = 0;

$var_d1 = date("j");

while ($inicio_ano < $final_ano) {

if ($var_d1 <> 1){

$var_dt = 7 - $var_d1;

} else {

$var_dt = 6

}

if (($var_d1 + $var_dt) > $var_df){

$var_d2 = $var_df;

$semana=$semana + 1;

} else {

$var_d2 = $var_d1 + $var_dt;

$semana=$semana + 1;

}

echo "semana $semana - de $var_d1 a $var_d2 <br>";

$var_d1 = $var_d2 + 1;

?>

Creio que vai ter varios erros, mas assim fica melhor para comecar a entender

Editado por beuleal
Link para o comentário
Compartilhar em outros sites

  • 0

Bom primeiro obrigado por estar tentando me ajudar....em 4 foruns q participo você é a unica pessoa que ta se aproximando do que realmente quero

Seguindo as modificações que você fez no codigo para PHP eu corrigi os erro e estou com o seginte codigo no momento:

$var_yr = "2011";
        $inicio_ano = "1/1/".$var_yr."";
        $final_ano = "31/12/".$var_yr."";
        $semana = 0;
        $var_d1 = date("d");

        if($inicio_ano < $final_ano) {
        
            if ($var_d1 != 1){
                $var_dt = 7 - $var_d1;
            } else {
                $var_dt = 6;
            }

            if (($var_d1 + $var_dt) > $var_df){
                $var_d2 = $var_df;
                $semana=$semana + 1;
            } else {
                $var_d2 = $var_d1 + $var_dt;
                $semana=$semana + 1;
            }
            echo "De ".$var_d1." a ".$var_d2." <br>";
            $var_d1 = $var_d2 + 1;
            
        }

Primeiro problema foi que com o WHILE não aprecia nada na tela....simplesmente ficava em branco, ai troquei por IF........o problema disso é que só mostro um resultado no echo, não ficando a lista de semanas como eu queria igual do site la

Segundo, no codigo em ASP $var_df tinha um valor, já nesse que passou pro PHP, não existe valor, logo a variavel $var_d2 não tem valor....o que atrapalha toda a conta e não deixa mostrar o ECHO corretamente.

Na verdade cara o que to preciando é quase isso, em uma variavel manter o inicio da semanae a na outra o final....isso porque depois eu vou usar estas variaveis numa consulta SQL, onde vou trazer a somatoria dos pedidos feitos em cada um daqueles dias.....MAS primeiro preiso das variaveis para delimitar a semana

Valeu

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo obtive grandes resultados, porem com uma variavel pré estipulada. veja os codigos:

<?

$ano = "2011";
$mes = 1;
$semana = 0;

$dia_i = 34; //corresponde ao dia 1 de janeiro e primeiro dia da semana
$dia_f = 1; //corresponde a uma semana apos o dia 1

$inicio_ano = "1/1/".$ano."";
$final_ano = "31/12/".$ano."";

$var_yr = "2011";
$var_d1 = "1/1/$var_yr";
$var_df = "31/12/$var_yr";

/*
1 + 7 = domingo
8 + 7 = domingo
15+ 7 = domingo
22 + 7 = domingo
29 + 7 = domingo

se domingo > 30, 30 (referente aos dias da semana) - 29 + 7 = domingo do mes 2 (junho) e dia 6.
*/

//if ($inicio_ano < $final_ano){ echo"final do ano é maior"; } else { echo "inicio do ano é maior";}
       
//Janeiro

while ($inicio_ano < $final_ano){

if ($dia_i == 1){

$dia_f = $dia_f + 6; // condicao para ultimo dia da semana


} else {

$dia_i = $dia_i + 6 + 1;//condicao para o primeiro dia da semana
$dia_f = $dia_i + 6;

    if($dia_f > 30){
    
    $dia_f = $dia_f - 30 + 6;
    $mes = $mes + 1;
    
    }
    

} // fecha else dia_i == 1

echo "$dia_i/$mes/$ano ------ $dia_f/$mes/$ano";
break;
}
?>

Editado por beuleal
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...