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

    Conoscere i numeri di tutti i mercoledì di un mese

    Come da titolo... conoscendo un mese X come si fa a sapere i giorni in numeri di tutti i mercoledì (o qualsiasi altro giorno) di questo dato mese X?


  2. #2
    Magari è molto più banale utilizzando strtotime(), io ho pensato ad una cosa del genere
    Codice PHP:
    <?php
    $mese 
    "2006-10-01";
    $arr explode('-'$mese);

    $data strtotime($mese);

    for(
    $i=1$i<=date('t',$data); $i++) {

        
    $giorno $arr[0] . "-" $arr[1] . "-" $i;
        
    $timestamp strtotime($giorno);
        
        if(
    date('w'$timestamp) == 3$mercoledi[] = $i;
    }

    print_r($mercoledi);
    ?>

  3. #3
    mi è piaciuto il problema e ho fato una funzioncina (che funge per qualsiasi giorno della settimana)


    Codice PHP:
    function find_weekdays($mese,$anno,$weekday)
    {
     
    //trovo il primo mercoledì 
     
    $giorni 1//mi serve per scorrere i primi giorni del mese. Farò al massimo 7 tentativi
     
    while(date('w'mktime(0,0,0,$mese,0,$anno)+$giorni*86400) != $weekday$giorni++;
     
    $days[] = $giorni; /finito il ciclo $giorni sarà il primo $weekday del mese

     
    //per gli altri aggiungo 7 giorni al $weekdaiprecedente finchè non finisce il mese
     
    for($i=1checkdate($mese,$new=$days[$i-1]+7,$anno); $i++) $days[$i]=$new;

     return 
    $days;

    La invochi così:

    //il terzo parametro è 0 per domenica e rprogressivamente cresce fino a 6 per sabato
    $merc = find_weekdays(9,2006,3);
    foreach($merc as $giorno) echo "$giorno ";

  4. #4
    in alternativa anche così vhe dovrebbe essere più efficiente:


    function find_weekdays($mese,$anno,$weekday)
    {
    $english_days = array('Sunday','Monday','Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');

    //trovo il primo mercoledì
    $days[] = date('j', strtotime ("next {$english_days[$weekday]}",mktime(0,0,0,$mese,1,$anno)));

    //per gli altri aggiungo 7 finchè non finisce il emse
    for($i=1; checkdate($mese,$new=$days[$i-1]+7,$anno); $i++) $days[$i]=$new;

    return $days;
    }


    o meglio ancora:

    function find_weekdays($mese,$anno,$weekday)
    {

    //trovo il primo mercoledì
    $days[] = date('j', strtotime ("next $weekday",mktime(0,0,0,$mese,1,$anno)));

    //per gli altri aggiungo 7 finchè non finisce il emse
    for($i=1; checkdate($mese,$new=$days[$i-1]+7,$anno); $i++) $days[$i]=$new;

    return $days;
    }

    a pattoo di passare come terzo parametro il nome del giorno della settimana cercato, ma in inglese


    fate vobis

  5. #5
    figo!
    Vi ho "stimolati" LOL

    ora provo le varie soluzioni

  6. #6
    Originariamente inviato da PazZII
    figo!
    Vi ho "stimolati" LOL

    ora provo le varie soluzioni
    ho dato una "pettinata" a quelle di guidozz....

    Codice PHP:

    <?php

    function find_weekdays($mese,$anno,$giorno)  {

    $listDays = array('Domenica' => 'Sunday','Lunedì' => 'Monday','Martedì' => 'Tuesday',
                  
    'Mercoledì' =>  'Wednesday''Giovedì' => 'Thursday',
                  
    'Venerdì' =>  'Friday''Sabato' =>  'Saturday');

    $days[] = date('j'strtotime("first {$listDays[$giorno]}"mktime(0,0,0,$mese,0,$anno)));

    for(
    $i=1checkdate($mese$new $days[$i-1]+7$anno); $i++)

    $days[$i] = $new;

    return 
    $days;

    }

    $giorno 'Sabato';  // in italiano
    $mese 9;
    $anno 2006;

    $_days find_weekdays($mese$anno$giorno);

    echo 
    "<pre>";
    print_r($_days);

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

  7. #7
    ho provato per ora solo quest'ultima e funziona.
    Molto probabilmente mi aiuterà tantissimo.

    In pratica quello che devo fare è un organizer con note che possono essere ripetute.

    Cioè una nota in agenda può essere valida e quindi apparire nell'organizer dal 15 agosto al 23 dicembre di ogni lunedì e mercoledì alle ore 10:22.

    Agghiacciante.
    Magari apro un topic apposito... è un pò ostico sto problema, cmq grazie per adesso. :P


  8. #8
    Altra alternativa
    Codice PHP:
    <?php
    function find_weekdays($mese,$anno,$giorno) {
        
        
    $days = array('Domenica' => 'Sunday''Lunedì' => 'Monday''Martedì' => 'Tuesday''Mercoledì' =>  'Wednesday'
                      
    'Giovedì' => 'Thursday''Venerdì' =>  'Friday''Sabato' =>  'Saturday');
                      
        
    $first date('j'strtotime("first {$days[$giorno]}"mktime(0,0,0,$mese,1,$anno)));
        
    $last date('j'strtotime("last {$days[$giorno]}"mktime(0,0,0,$mese+1,1,$anno)));
        
        for(
    $i=$first$i<=$last$i=$i+7$ris[] = $i;
        
        return 
    $ris;
    }

    $stampa find_weekdays(9,2006,'Mercoledì');
    print_r($stampa);
    ?>

  9. #9
    hai un bug... lo stesso di guidozz...


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

  10. #10
    MMMm

    Mi sa che anche il tuo script ha un bug (o sono lesso io...)

    Codice PHP:

    function find_weekdays($mese,$anno,$giorno)  { 

    $listDays = array('Domenica' => 'Sunday','Lunedì' => 'Monday','Martedì' => 'Tuesday'
                  
    'Mercoledì' =>  'Wednesday''Giovedi' => 'Thursday'
                  
    'Venerdì' =>  'Friday''Sabato' =>  'Saturday'); 

    $days[] = date('j'strtotime("first {$listDays[$giorno]}"mktime(0,0,0,$mese,0,$anno))); 

    for(
    $i=1checkdate($mese$new $days[$i-1]+7$anno); $i++) 

    $days[$i] = $new

    return 
    $days



    $giorno 'Giovedi';  // in italiano 
    $mese 9
    $anno 2006

    $_days find_weekdays($mese$anno$giorno); 

    echo 
    "<pre>"
    print_r($_days);
    echo 
    "</pre>"

    // stampa questo
    Array
    (
        [
    0] => 31

    Il mese in esame è settembre, e nello specifico tutti i Giovedì.
    Ma stampa 31 che fra parentesi settembre nemmeno arriva a 31 LOL

    E' un errore che si presenta solo con i giovedì.
    Indago....

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.