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

    [PHP] Differenza tra date

    So che è un argomento trattato e ritrattato ma lo stesso non riesco a risolvere il mio problema..

    Devo sapere tipo tra 1345 secondi la nuova data nel seguente formato: AnnoMeseGiornoOraMinutiSecondi

    Come ad esempio può essere: 20060331214312

    Pensavo di portare la data attuale in secondi con mktime così:

    codice:
              
    $data1=mktime(date("H"),date("i"),date("s"),date("m"),date("j"),date("Y"));
    poi sommo $data1 con i secondi di prima...

    A questo punto ho la mia data in secondi come la riporto in AnnoMeseGiornoOraMinutiSecondi?

    Questa è la domanda... anche se credo di aver sbagliato tutto il ragionamento... forse devo usare un'altra funzione? Grazie della pazienza......

  2. #2
    potresti spiegarti meglio, possibilmente in italiano

    vediamo se ho capito bene....


    la data attuale la ottieni con time();


    per portarla nel formato che dici tu... dovrebbe essere così (potrei sbagliare la stringa di formato.. non ricordo a memoria tutte le possibilità)

    date('YmjHis'); //time() è preso automaticamente se non passi un secondo parametro....


    quindi


    date('YmjHis',time()+1345);


    così dovresti ottenere, nel formato richiesto, la data corrispondente a 1345 secondi dopo l'istante di esecuzione dello script....



  3. #3
    Perfetto funziona grazie 1000 ciao

  4. #4
    E io che sono andato a complicarmi la vita Era tanto semplice Grazie ancora

  5. #5

    problema

    anche io ho fatto cosi' ma ho incontrato problemi quando le date sono inferiori al 1/1/1970 (lo 0 dell' unix time)
    cosi' come se vanno oltre il 2038 ...

    32-bit overflow

    At 03:14:08 UTC on January 19, 2038 (+231), a 32-bit signed integer representation of Unix time will overflow. Systems using a 32-bit signed integer Unix time_t will therefore be unable to represent that time, or any later, and will likely wrap around to 20:45:52 UTC on December 13, 1901, with integer value -231. This is known as the year 2038 problem.

    in questo senso e' consigliabile utilizzare le funzioni dell' estensione Calendar di PHP
    http://it.php.net/manual/en/ref.calendar.php
    anche se non bastano ... ci vorrebbe una funzione date_diff($date1,$date2) che rende un array associativo di quanti anni,mesi,giorni,ore,min e sec ci sono tra le due date tipo:
    list($yy,$m,$d,$h,$m,$s) = date_diff($data1, $data2);

    comunque con PHP per manipolare i valori di ogni elemento non c'e' bisogno sempre di ricorrere al time() .... es:

    $start = gregoriantojd($smon, $sday, $syear);
    $end = gregoriantojd($emon, $eday, $eyear);
    $daysdiff = $end - $start;

    oppure


    function date_diff($earlierDate, $laterDate) {
    //returns an array of numeric values representing days, hours, minutes & seconds respectively
    $ret=array('days'=>0,'hours'=>0,'minutes'=>0,'seco nds'=>0);

    $totalsec = $laterDate - $earlierDate;
    if ($totalsec >= 86400) {
    $ret['days'] = floor($totalsec/86400);
    $totalsec = $totalsec % 86400;
    }
    if ($totalsec >= 3600) {
    $ret['hours'] = floor($totalsec/3600);
    $totalsec = $totalsec % 3600;
    }
    if ($totalsec >= 60) {
    $ret['minutes'] = floor($totalsec/60);
    }
    $ret['seconds'] = $totalsec % 60;
    return $ret;
    }

    Ciao

    Simone

  6. #6
    dipende dagli scopi... se devi memorizzare date di nascita non usi timestamp perchè possono capitare antecedenti al 1970.. se dev memorizzare l'ora in cui avviene qualcosa... o cmq intervalli di tempo dell'ordine dei giorni mesi o pochi anni... allora il timestamp va benissimo

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.