Tids differanser

Tids differanser

Innleggav kentivar » tir 18.08.2009 3:08

Hei, har 3 funksjoner som finner tidsdifferansen fra et lagret unix timestamp til nåtid i minutter,timer og dager!

noen her som kan hjelpe meg med sekunder,uker,måneder og år?

Her er funksjonene jeg har
Kode: Merk alt
function timeDifferenceInMinuttes($unixTimestamp) {
   $diff = time() - $unixTimestamp;
   return round(($diff / 60));
}

function timeDifferenceInHours($unixTimestamp) {
   $diff = time() - $unixTimestamp;
   return round(($diff / 3600));
}

function timeDifferenceInDays($unixTimestamp) {
   $diff = time() - $unixTimestamp;
   return round($diff / (24*3600));
}
medlem i 199 måneder
 

Re: Tids differanser

Innleggav ak » ons 19.08.2009 0:44

sekunder er vel bare $diff ?

Spørs litt hva du skal bruke det til, hvor mye du kan runde av:
en uke = 3600*24*7
en måned = 3600*24*30.41
et år = 3600*24*365.25


Hvis du vil ha det nøyaktig så bruker du date()

Forenklet eksempel for å telle uker:
$diff = date('W') - date('W',$unixTimestamp);

Jeg sier forenklet fordi det ikke tar høyde for at det kan være uke 3 i 2009 og uke 43 i 2008. Det ordner du ;)

Administrator
Brukerens avatar
medlem i 236 måneder
 

Re: Tids differanser

Innleggav kentivar » fre 21.08.2009 16:34

Takk takk :)

Skjønte ikke det siste der om telling av uker :-(
medlem i 199 måneder
 

Re: Tids differanser

Innleggav ak » fre 21.08.2009 16:46

Ta en titt på http://fr.php.net/manual/en/function.date.php

Dato funksjonen har tilgang til kalendere osv, så den vet uketallet for en gitt dato.

Men siden 1. januar 2008 = uke 1
og 1. januar 2009 = uke 1

Så vil de to datoene gitt deg en forskjell på 0 uker. Så du må også sjekke årstallet, gangen den differansen med 52 og legge til.

Administrator
Brukerens avatar
medlem i 236 måneder
 

Re: Tids differanser

Innleggav kentivar » fre 21.08.2009 17:10

takker,

hehe, jeg bruker en widget som heter PHPfr (PHP Function Reference) til og lese dokumentasjon men jeg sjekket dokumentasjonen online nå for time() og i notatene så fant jeg en metode som gjør akkurat det jeg var ute etter! :p

Kode: Merk alt
<?php
function nicetime($date)
{
    if(empty($date)) {
        return "No date provided";
    }
   
    $periods         = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
    $lengths         = array("60","60","24","7","4.35","12","10");
   
    $now             = time();
    $unix_date         = strtotime($date);
   
       // check validity of date
    if(empty($unix_date)) {   
        return "Bad date";
    }

    // is it future date or past date
    if($now > $unix_date) {   
        $difference     = $now - $unix_date;
        $tense         = "ago";
       
    } else {
        $difference     = $unix_date - $now;
        $tense         = "from now";
    }
   
    for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
        $difference /= $lengths[$j];
    }
   
    $difference = round($difference);
   
    if($difference != 1) {
        $periods[$j].= "s";
    }
   
    return "$difference $periods[$j] {$tense}";
}

$date = "2009-03-04 17:45";
$result = nicetime($date); // 2 days ago

?>
medlem i 199 måneder
 


Returner til PHP



Hvem er i Forumene

Registrerte brukere: Google [Bot]



cron