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

    funzione differenza tra date

    Salave a tutti, ho questa funzione per ricavare la differenza tra date

    function dateTimeDiff($data){

    date_default_timezone_set('Europe/Rome');

    $datetime = date_create($date);
    $current_date = date_format($datetime, 'Y-m-d H:i:s');



    // Extract $current_date
    $current_year = substr($current_date,0,4);
    $current_month = substr($current_date,5,2);
    $current_day = substr($current_date,8,2);

    // Extract $data
    $ref_year = substr($data,0,4);
    $ref_month = substr($data,5,2);
    $ref_day = substr($data,8,2);

    // create a string like 20071021
    $tempMaxDate = $current_year . $current_month . $current_day;
    $tempDataRef = $ref_year . $ref_month . $ref_day;

    $tempDifference = $tempMaxDate-$tempDataRef;

    if($tempDifference >= 12){
    $iDf = $current_month-$ref_month;

    if ($iDf='1'){
    echo 'un ' .$iDf .' mese fa';
    }else{
    echo 'circa ' .$iDf .' mesi fa';
    }

    } else {
    // Extract $current_date H:m:ss
    $current_hour = substr($current_date,11,2);
    $current_min = substr($current_date,14,2);
    $current_seconds = substr($current_date,17,2);
    // Extract $data Date H:m:ss
    $ref_hour = substr($data,11,2);
    $ref_min = substr($data,14,2);
    $ref_seconds = substr($data,17,2);

    $dDf = $current_day-$ref_day;
    $hDf = $current_hour-$ref_hour;
    $mDf = $current_min-$ref_min;
    $sDf = $current_seconds-$ref_seconds;



    if($dDf<1){
    // Hours
    if($hDf>0){
    if($mDf<0){
    $mDf = 60 + $mDf;
    $hDf = $hDf -1;
    if ($hDf='1'){
    $ora="ora";
    }else{
    $ora="ore";
    }
    echo 'circa ' .$hDf. ' '.$ora.' fa ';
    } else {
    echo $mDf .' minuti fa ';
    }
    } elseif($hDf<1){

    if($mDf>0){
    echo $mDf . ' minuti fa ';
    } else {
    echo $sDf . ' secondi fa ';
    }


    }



    } else {
    if($dDf='1'){
    echo $dDf . ' giorno fa ' ;
    }else{
    echo $dDf . ' giorni fa ' ;
    }
    }
    }
    }

    praticamente i munuti non funzionano bene qualcuno mi puoi dare una mano? Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    puoi usare direttamente la funzione date(), per esempio (dal manuale):

    Codice PHP:
    $tomorrow  mktime(000date("m")  , date("d")+1date("Y")); 

  3. #3
    scusa l ignoranza mktime per l ora attuale?

  4. #4
    la tua richiesta e' ambigua. Una differenza tra due date non e' una terza data ma un insieme di anni, mesi, giorni, ore, minuti e secondi. E' quindi importante capire il range di risultato che ti serve.

    per l'ora attuale in unix timestamp

    $adesso = time();

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    in pratica mktime() accetta come parametri anche valori "fuori dal range" normale... se per esempio crei un timestamp del 32 dicembre 2009, il sistema lo "converte" in 1 gennaio 2010... quindi puoi utilizzarla per fare calcoli tra timestamp e poi usare date() per formattare il tutto: sul manuale ci sono degli esempi anche di calcoli tra differenze di date, per es.:

    Codice PHP:
    caculate days between two date

    <?php
      
    // end date is 2008 Oct. 11 00:00:00
      
    $_endDate mktime(0,0,0,11,10,2008);
      
    // begin date is 2007 May 31 13:26:26
      
    $_beginDate mktime(13,26,26,05,31,2007);

      
    $timestamp_diff$_endDate-$_beginDate +;
      
    // how many days between those two date
      
    $days_diff $timestamp_diff/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.