Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Ieri, oggi, 2 giorni fa ecc ecc

    Salve a tutti,
    poichè è un pò che Googlo senza trovare soluzione, mi chiedevo se qualcuno conoscesse una classe o funzione in php che mi dica, partendo da una data, quanti giorni sono passati dalla stessa.

    Esempio: ieri, oggi, 1 giorno fa, 2 giorni fa, 1 settimana, 2 settimane, 1 mese, 1 anno

    ecc ecc.

    Sapete se esiste qualcosa??

    Grazie mille
    Perchè uso Maxthon? | Mi piace questa chat

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    1 giorno fa e ieri suppongo siano la stessa cosa

    Codice PHP:
    $data1 mktime(0,0,0,12,20,2010);
    $oggi time();

    $diff = ($oggi-$data1)/60;

    switch(
    $diff)
    {
         case 
    0:
             echo 
    "oggi";
             break;
         case 
    1:
             echo 
    "ieri";
             break;
         default:
             echo 
    "$diff giorni fa";


  3. #3
    Il mio dubbio piu grande era ed è relativo al fatto che vorrei contare anche le settimane mesi e anni, per renderlo piu elegante.
    Qualcosa del tipo dopo i 30 gg iniziamo a contare solo i mesi, dopo 365 gli anni.
    Alla fine è brutto leggere 132 giorni fa.

    Che pensi?

    Grazie mille!!!
    Perchè uso Maxthon? | Mi piace questa chat

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    libero di fare quello che vuoi ^_^

  5. #5
    Ciao,
    la mia esperienza mi dice che in questi casi il vero problema è di definire delle regole certe per gestire la variabilità di lunghezza dei mesi e degli anni, nel senso che non è vero che gli anni sono di 365 giorni e i mesi di 30 anche se comunemente si tende a dire così per semplificare.

    Anzi se ci pensi, per certi versi sarebbe più corretto dire che i mesi sono da 31 visto che i mesi da 31 sono 7 e quelli da 30 solo 4.

    Una volta stabilite in modo chiaro queste regole l'implementazione è uno scherzo, basta solo giocare un po con le if e se ne viene fuori facilmente, ma se le regole non sono chiare ci si ritrova con problemi tipo:

    dal 10 gennaio del 2009 al 10 gennaio del 2010 passa un anno
    mentre
    dal 10 gennaio del 2008 al 10 gennaio del 2009 passa un anno e un giorno

    E quanto tempo c'è fra il 30 aprile e il 31 maggio? Un mese? Oppure un mese e un giorno?

    Ecco, secondo me devi prima decidere, in base alla tua situazione come gestire questo tipo di problemi e metter giù delle specifiche dettagliate e poi provare a implementare la cosa.

    In ambito bancario a volte si pongono problemi di questo tipo perché può essere necessario, ad esempio, attribuire un tasso di interesse agevolato ai nuovi clienti per "tre mesi". Ma che significa tre mesi? Non si può pensare che il cliente che apre il conto il 10 agosto abbia il tasso agevolato fino al 10 novembre mentre quello che apre il conto il 10 settembre ce l'abbia fino al 10 dicembre perché i due clienti avrebbero l'agevolazione per periodi diversi (92 giorni il primo e 91 il secondo) e questo potrebbe portare problemi legali.
    Non sto a dirti quali soluzioni vengono adottate dalle banche perché sarei off-topic, volevo solo sottolineare come non si tratti affatto di un problema banale se non ci si chiarisce bene prima come gestire tutti i casi possibili.


    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  6. #6
    Originariamente inviato da bstefano79
    1 giorno fa e ieri suppongo siano la stessa cosa

    Codice PHP:
    $data1 mktime(0,0,0,12,20,2010);
    $oggi time();

    $diff = ($oggi-$data1)/60;

    switch(
    $diff)
    {
         case 
    0:
             echo 
    "oggi";
             break;
         case 
    1:
             echo 
    "ieri";
             break;
         default:
             echo 
    "$diff giorni fa";

    A me questo script dà numeri molto lunghi
    mi mette oltretutto in confusione visto che altri esempi che ho trovato in giro sono script molto più complessi!!!
    Perchè uso Maxthon? | Mi piace questa chat

  7. #7
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    si hai ragione devi dividere per molto di più per ottenre i giorni

    $diff = ($oggi-$data1)/(60*60*24);

  8. #8
    Grazie mille, ora va alla grande :-9
    Perchè uso Maxthon? | Mi piace questa chat

  9. #9
    $giorni=(strtotime("2003-03-26") - strtotime("2003-02-26"))/(86400);
    Ciao!

  10. #10
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    Originariamente inviato da fmortara
    $giorni=(strtotime("2003-03-26") - strtotime("2003-02-26"))/(86400);
    allora meglio $giorni=(strtotime("now") - strtotime("2003-02-26"))/(86400); visto che lo vuole sapere a partire dal giorno stesso

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.