Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322

    fare un ciclo con le date

    mi serve di stampare nella mia pagina web una cosa del genere:

    venerdi 3 aprile
    sabato 4 aprile
    domenica 5 aprile

    e cosi via per i prossimi 30 giorni.. come posso fare un ciclo del genere?? voglio dire con le funzioni di data che non conosco molto bene è possibile fare una cosa dal genere??

    il mio pseudocodice è il seguente

    WHILE cont <= 30 FAI

    stampa data piu cont
    cont ++
    stampa (
    )

    fine

    la primariga stamperà la data di oggi, la seconda di domani e cosi via..

    come posso fare??? mi sto intrecciando..

    grazie a chi volesse aiutarmi!

  2. #2
    E' piuttosto semplice. In PHP le date sono gestite come interi UNIXTIMESTAMP.

    Ti basta eseguire un ciclo da 0 a 30 ed aggiungere alla data attuale (time()) il numero di secondo che ci sono in un giorno. Poi usi date() per stampare la data nel formato che preferisci.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    Originariamente inviato da filippo.toso
    E' piuttosto semplice. In PHP le date sono gestite come interi UNIXTIMESTAMP.

    Ti basta eseguire un ciclo da 0 a 30 ed aggiungere alla data attuale (time()) il numero di secondo che ci sono in un giorno. Poi usi date() per stampare la data nel formato che preferisci.
    una cosa del genere??

    i = 1;
    numsecgiorno = ...;

    while (i < 30) {
    time = time + numsecgiorno;
    echo date(time...);
    i=i+1;
    }

  4. #4
    giusto per completezza, nelle recenti versioni di php, finalmente, hanno aggiunto una gestione, benché non troppo completa, delle date.

    In realtà scrivere
    "domenica 5 aprile"

    è un pò più complesso perché o lo fai sfruttando degli array con la lingua scritta li e poi con date leggi singolarmente il numero del mese, il numero del giorno della settimana e cosi via, oppure imposti la lingua, come variabile d'ambiente (LC_ALL o LC_TIME su ita o italian su windows mentre su it_IT su linux) e poi lanci il comando date normalmente

    NOTA: windows, purtroppo, non tiene la codifica UTF8 per i locale quindi se devi visualizzarli su una pagina UTF8 devi eventualmente encodarli con utf8_encode

    Con questo comando
    http://it2.php.net/manual/en/function.date-create.php

    puoi creare gli oggetti DateTime da manipolare.

    Qui trovi informazioni sull'oggetto DateTime
    http://it2.php.net/manual/en/class.datetime.php

    Se ad esempio hai bisogno di una data riferita al primo del mese corrente

    codice:
    setlocale('LC_ALL', 'ita', 'it_IT');
    date_default_timezone_set('Europe/Rome');
    .
    .
    .
    $dateTimeObject = date_create(sprintf('%04d-%02d-01', date('Y'), date('M')));
    .
    .
    .
    $lastDayOfTheMonth = date('t');
    for($day=0; $day<lastDayOfTheMonth; $day++)
    {
      echo $dateTimeObject->format('l, j F Y') . "
    \r\n";
    }
    questo codice (che ho scritto al volo e non ho minimamente testato quindi è da controllare con attenzione) ti dovrebbe stampare l'elenco dei giorni del mese nel formato NOME-GIORNO, NUMERO-GIORNO NOME-MESE ANNO

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    ma posso anche evitare di scrivere il nome dei giorni initaliano.. mi bastano le date.. il mio problema è farle ciclare..

    cioe partire da oggi e scrivere i prossimi 30 giorni in ordine (che possono appartenere a due mesi diversi fra l'altro..)

  6. #6
    se guardi al mio codice c'è dietro un concetto molto semplice ... gli dai il giorno iniziale e poi il numero di giorni da avanzare

    il valore che ho messo io corrisponde al numero di giorni del mese corrente ma nessuno ti vieta di cambiarlo


    EDIT:
    mi sono dimenticato una righina nel codice andavo di fretta

    codice:
    $dateTimeObject->modify("+1 day");
    prima dell'echo

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    infatti ci sto smanettando.. lo testo e t faccio sapere!

  8. #8
    Codice PHP:
    <?php 
    $date 
    time();
    for (
    $i 0$i 30$i++) {
        print(
    date('l, j F Y'$date $i 86400) . '
    '
    );
    }
    ?>

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    perfetto filippo! grazie mille!

    se non chiedo troppo.. esiste un modo veloce per tradurre il tutto in italiano senza usare array??

    cioe esiste una qualche funzione del php che prevede di scrivere la data in italiano??

    non credo proprio vero?? :P

  10. #10
    Un po' più di impegno da parte tua sarebbe opportuno

    Codice PHP:
    <?php
    setlocale
    (LC_TIME'italian'); // it_IT
    $date time();
    for (
    $i 0$i 30$i++) {
        print(
    strftime('%A, %e %B %Y'$date $i 86400) . '
    '
    );
    }
    ?>

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 © 2025 vBulletin Solutions, Inc. All rights reserved.