Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [php] date - calcolare "estremi" della settimana

    uso questa funzione per calcolare l'inizio e la fine di una settimana:

    codice:
    function findWeekPeriod($week, $year)
    {
       $aPeriod["start"]=date("d/m",mktime(0,0,0,1,1+$week*7-6,$year));	// primo giorno della settimana
       $aPeriod["end"]=date("d/m",mktime(0,0,0,1,1+$week*7,$year));	// ultimo giorno della settimana
       
    /*
       echo "<pre>";
       print_r($aPeriod);
       echo "</pre>";
    */   
       return $aPeriod["start"];
    }
    dove $week è calcolata ( di default ) con date("W") quindi ho la settimana corrente.

    La funzione sopra è sempre andata bene, ma non capisco come mai dall'inizio del nuovo anno mi sballa.
    Mi restituisce come primo giorno della settimana Lunedì 03/01 e non Lunedì 01/01, sapete dirmi dove sta l'inghippo? :master:





    Grazie a tutti anticipatamente e auguroni per un figoso 2007
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    428
    hai controllato l'orario del server?

  3. #3
    mi risulta corretta 02/01/2007 11:45



    solo un po' diversi i minuti
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120

    Re: [php] date - calcolare "estremi" della settimana

    Originariamente inviato da 13manuel84
    La funzione sopra è sempre andata bene
    Scommetto che "sempre" significa nel 2006, non prima...

    Tu aggiungi n settimane al 1° gennaio e dai per scontato che quello che risulta sia la fine di una settimana. Se il 1° gennaio non è domenica spiegami come fa a funzionare...

  5. #5

    Re: Re: [php] date - calcolare "estremi" della settimana

    Originariamente inviato da luca200
    Scommetto che "sempre" significa nel 2006, non prima...

    Tu aggiungi n settimane al 1° gennaio e dai per scontato che quello che risulta sia la fine di una settimana. Se il 1° gennaio non è domenica spiegami come fa a funzionare...
    si beh...l'ho usata solo nel 2006, prima non ne avevo bisogno


    e allora come faccio a calcolare gli estremi di una settimana se il primo giorno dell'anno non è domenica?
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Ti rispondo a logica e non col codice perché non ho voglia di scriverlo
    Premetto che non so quale sia esattamente la tua necessità, quindi non è detto che vada bene per te.
    In generale, se hai bisogno di calcolare inizio e fine delle settimana attuale ti basta vedere che giorno (della settimana) è oggi e aggiungere o togliere il numero di giorni relativo (ad es. se è giovedì fai -3 per ottenere il lunedì).
    Se invece vuoi proprio una funzione come quella che hai postato qui, la cosa si complica un po' perché dovresti prima calcolare che giorno era il primo gennaio, poi spostarti al primo lunedì successivo e verificare se quello corrisponde alla prima o alla seconda settimana (nel secondo caso dovresti andare indietro di una settimana ancora, anche se credo esista una regola precisa per stabilire qual è la prima settimana dell'anno). A questo punto ti sposti ancora indietro al giorno prima (la domenica) e ottieni la data a cui fare la somma delle settimane come fai ora.

    Semplice no? :ignore:

  7. #7
    semplicissimo


    a me servirebbe esattamente quello che hai descritto nella seconda parte. Perché io mi salvo i report dei contatti di un form nel db e il cliente deve vedere quanti contatti che ha avuto, diciamo una vista settimanale. Di default vedrà ovviamente la settimana attuale, ma avrà la possibilità di "navigare" fra tutte le altre settimane, quindi è un po' uno sbattimento mi sembra di aver capito...



    non c'è qualcosa di pronto da usare che tu sappia?
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  8. #8
    Originariamente inviato da 13manuel84
    non c'è qualcosa di pronto da usare che tu sappia?
    vedi se ti puo' servire questa funzione. primo giorno della settimana e' lunedi', l'ultimo e' la domenica.

    Codice PHP:
    <?php

    function FirstLastWeek($data) {

    list(
    $giorno$mese$anno) = explode('/'$data);

    $w date('w'mktime(0,0,0$mese$giorno$anno));
    $day['W'] = date('W'mktime(0,0,0$mese$giorno$anno));

    $giorni=array(0=>'Domenica'1=>'Lunedì'2=>'Martedì',3=>'Mercoledì',
                  
    4=>'Giovedì'5=>'Venerdì'6=>'Sabato');

    $day['giorno'] = $giorni[$w];
    $day['anno'] = $anno;
     
    if(
    $w == )  {
          
    $day['lunedi']   = date('d/m/Y'mktime(0,0,0$mese$giorno 6$anno));
          
    $day['domenica'] = date('d/m/Y'mktime(0,0,0$mese$giorno$anno));
          }  else {
                  
    $day['lunedi']   = date('d/m/Y'mktime(0,0,0$mese$giorno $w 1$anno));
                  
    $day['domenica'] = date('d/m/Y'mktime(0,0,0$mese$giorno $w 7$anno));
                  }
    return 
    $day;
    }

    $data '15/8/2007';
    $day FirstLastWeek($data);

    echo 
    "Il giorno $day[giorno] $data è compreso nella settimana $day[W]-$day[anno]

          Inizio settimana Lunedì 
    $day[lunedi], fine settimana Domenica $day[domenica]
    "
    ;
    ?>
    Ti rende anche il giorno e settimana dell'anno...


    @edit... ho tolto 7=>domenica. A me serve, a te farebbe confusione.


    .

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    ti ringrazio moltissimo!

    ora vedo cosa riesco a fare, perché a me servirebe più che altro il contrario, ossia partire dalla settimana d'interesse ( quella selezionata dal cliente ) e far vedere i report divisi per giorno, come potete vedere nell'allegato.


    Ora guardo, magari mi viene più semplice mettere una tendiona con la selezione della settimana d'interesse, e all'interno della tendina stessa far vedere gli estremi...dite che potrebbe andare o è una cavolata?


    edit: non fate caso alle date dell'immagine perché ci sto lavorando...ora mi esce lunedì il 2 gennaio
    Immagini allegate Immagini allegate
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  10. #10
    Originariamente inviato da piero.mac
    vedi se ti puo' servire questa funzione. primo giorno della settimana e' lunedi', l'ultimo e' la domenica.

    ...
    Ti rende anche il giorno e settimana dell'anno...


    @edit... ho tolto 7=>domenica. A me serve, a te farebbe confusione.


    .

    ho usato la tua funzione tale e quale!
    Ho preferito modificare il mio script in modo da passargli una data valida all'interno della settimana che mi interessa perché avevo iniziato a modificare la funzione ma dopo un'ora e ben 15 minuti non avevo cavato un ragno dal buco così ho fatto l'inverso e in 15 minuti ho risolto.





    Grazie mille ancora!!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.