Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: differenza tra date

  1. #1

    differenza tra date

    ragazzi io ho delle date in un database salvate in TIME(), come posso fare la differenza tra una data in time e un altra?

  2. #2
    Codice PHP:
     function datediff($tipo$partenza$fine)
        {
            switch (
    $tipo)
            {
                case 
    "A" $tipo 365;
                break;
                case 
    "M" $tipo = (365 12);
                break;
                case 
    "S" $tipo = (365 52);
                break;
                case 
    "G" $tipo 1;
                break;
            }
            
    $date_diff $partenza $fine;
            
    $date_diff  floor(($date_diff 60 60 24) / $tipo);
            return 
    $date_diff;
        }
     
    echo 
    datediff("G""1334087431"time()); 
    il calcolo lo fa giusto, ma risulta in negativo, in questo esempio mi da -16, invece dovrebbe dare 16.

    perchè?

  3. #3
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    NO!

    Ci sono gia' le fuzioni in php per fare questi conti, e non mi stancherò mai di dirvelo.
    Hai la classe dateTime usala!
    http://php.net/manual/en/book.datetime.php

    1- recuperi la data da database
    2- usi la date_create_from_format o altra funzione per costruire il tuo oggetto date
    3- usa l'opportuno metodo di conteggio :
    http://www.php.net/manual/en/datetime.diff.php
    http://www.php.net/manual/en/datetime.add.php
    http://www.php.net/manual/en/datetime.sub.php

  4. #4
    scusami ma non ho capito, avendo il time non mi viene semplice fare la differenza?

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Si ma usa le funzioni che ti ho linkato, sono migliori.

    In quei links hai tutti gli strumenti per risolvere elegantemente il tuo problema

  6. #6
    mi potresti aiutare, non sto capendo molto

  7. #7
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Allora tu hai fatto 1 funzione per eseguire un conteggio sulle date.

    Da quello che ho visto ti aspetti di calcolare la differenza tra 2 date, unitamente al fatto che la differenza venga calcolata secondo la scala cronometrica che decidi te, in parole povere ti fai restituire la differenza in anni, mesi settimane o giorni in base al primo parametro che passi.
    Nella funzione non tieni conto dei cambi di ora legale/solare, non tieni conto se l'anno e' bisestile o meno ... etc....

    Io ti dico che php ti mette a disposizione una serie di funzioni che gia' fanno tali conteggi molto precisamente. Quindi usa tali funzioni. puoi Usarel anche nella tua funzione cosi' da riformattare l'output conformente al quanto il sistema di aspetta gia.

    In soldoni devi modificare la tua funzione in modo che

    1- $partenza e $fine siano convertite in oggetti dateTime (suppongo siano delle timestamp ma l'oggetto dateTime gestisce pure le timestamps)
    2-utilizzare l'opportuno metodo di calcolo differenza messo a disposizione dall'oggetto datetime
    3- analizzare il risulatato del calcolo differenza e quindi riformattarlo in base alla scala cronometrica scelta(mese,anno, etc..)
    4- restituire il risultato.

  8. #8
    Guarda sto provando ad usarla ma sbaglio sempre non so

    Codice PHP:
    $date = new DateTime();
    $start $date->setTimestamp(1334570902);
    $end $date->setTimestamp(time());
    $interval $start->diff($end);
    echo 
    $interval->format('%R%a days'); 
    non mi potresti fare un esempio?

  9. #9
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Noti qualche differenza ?

    Codice PHP:

    $start 
    = new DateTime();
    $end   = new DateTime() ;

    $start->setTimestamp(1334570902);
    $end->setTimestamp(time());

    $interval $start->diff($end);

    echo 
    $interval->format('%R%a days'); 

  10. #10
    beh si ho visto, grazie mille. Ma quindi in questo modo lui calcola anno bisestile etc anche? mentre con una funziona come quella di sopra tutto questo non avviene.

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.