Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473

    Problema Anno bisestile in php

    Ciao a tutti... Io so che in php se scrivo: $bisestile=date("L"); se $bisestile è = 1 allora qst anno è bisestile altrmineti se è =0 non lo è... Pero se io volessi sapere se il prox anno è bisestile oppure no, come faccio???

    Avevo pensato a $bisestile=date("L",$anno_riferimento) dove $anno_riferimento sarebbe l'anno che voglio verificare, pero in qst maniera non funzione!!!

    Grazie!

  2. #2
    codice:
    date('L', strtotime('next year'));

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    Perfetto... funziona, Grazie tante!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    Ciao scusa ma nn funziona!!!

    Ho fatto cosi

    $anno_rif=2009;

    $bisestile=date('L', strtotime($anno_rif));

    se stampo $bisestile mi da 1, se cambio l'anno e metto 2008 mi da sempre 1!!!
    Come è possibile???

  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da androita
    Ciao scusa ma nn funziona!!!

    Ho fatto cosi

    $anno_rif=2009;

    $bisestile=date('L', strtotime($anno_rif));

    se stampo $bisestile mi da 1, se cambio l'anno e metto 2008 mi da sempre 1!!!
    Come è possibile???
    Date richiede sempre un int, il suggerimento di piero.mac sfrutta la funzione strtotime per interpretare una stringa che dice "l'anno prossimo" e trasformarla in un timestamp.

    Se vuoi passare un anno qualsiasi cambia strtotime con:

    mktime(0,0,0, 1, 1, $anno);

    Per capire come funziona mktime vai qui:

    http://fr.php.net/manual/it/function.mktime.php

    ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    Ciao percio dovrei scrivere cosi:

    $anno_rif=2008;

    $bisestile=date('L', mktime(0,0,0, 1, 1, $anno_rif));

    ???

  7. #7
    Originariamente inviato da androita
    Ciao percio dovrei scrivere cosi:

    $anno_rif=2008;

    $bisestile=date('L', mktime(0,0,0, 1, 1, $anno_rif));

    ???
    ma anche:

    codice:
    $anno_rif = 2008;
    $bisestile = $anno_rif % 4 == 0 ? 1 : 0;

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

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da piero.mac
    ma anche:

    codice:
    $anno_rif = 2008;
    $bisestile = $anno_rif % 4 == 0 ? 1 : 0;
    Qui si va alla ricerca del pelo nell'uovo, però c'è da dire che:

    Un anno è bisestile se il suo numero è divisibile per 4, con l'eccezione che gli anni secolari (quelli divisibili per 100) sono bisestili solo se divisibili per 400.

    Sono cioè bisestili tutti gli anni la cui numerazione termina con le due cifre 04, 08, 12... fino a 96; gli anni che terminano con 00 sono bisestili solo se l'anno è divisibile per 400, cioè il 1600, il 2000, il 2400 eccetera.
    ciao

  9. #9
    Originariamente inviato da gianiaz
    Qui si va alla ricerca del pelo nell'uovo, però c'è da dire che:
    ciao
    vuol dire che per il 2100 faremo un pacht ....

    intanto avranno gia' fatto 2 patch per il unix timestamp.

    any way.... sempre a seguire il wikipedia che hai citato... potevi anche aggiungere le righe successive.

    Sono cioè bisestili tutti gli anni la cui numerazione termina con le due cifre 04, 08, 12... fino a 96; gli anni che terminano con 00 sono bisestili solo se l'anno è divisibile per 400, cioè il 1600, il 2000, il 2400 eccetera.

    In linguaggi di programmazione come C, Java, PHP, Perl, si può eseguire il test:

    ((anno % 4 == 0 && anno % 100 != 0) || anno % 400 == 0)

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

  10. #10
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da piero.mac
    vuol dire che per il 2100 faremo un pacht ....

    intanto avranno gia' fatto 2 patch per il unix timestamp.
    E' una questione di integrità, fare delle cose che durino
    any way.... sempre a seguire il wikipedia che hai citato... potevi anche aggiungere le righe successive.
    Sai che non le avevo nemmeno viste.. ho fatto un copia incolla selvaggio

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.