Avatar billede 123maka Nybegynder
02. december 2003 - 14:53 Der er 5 kommentarer og
1 løsning

funktion der udskriver tid til eller tid fra

Jeg har længe siddet og drømt lidt om en funktion der får et timestamp og derfra udregner tiden til (fx. Der er 1 måned, 10 dage, 10 timer og 2 minutter til) eller hvis det er sket (fx. Det er 1 måned, 4 dage og 10 timer og 5 minutter siden).

200 points herfra.
Avatar billede renerr Nybegynder
02. december 2003 - 15:01 #1
Er det ikke bare at lave nogle variabler med timer osv. også finde forskellen frem til den dato man gerne vil tage udgangspunkt i?
Avatar billede 123maka Nybegynder
02. december 2003 - 15:11 #2
jo
Avatar billede Slettet bruger
02. december 2003 - 21:17 #3
Skal den kunne gøre det for perioder over et år?
Avatar billede 123maka Nybegynder
15. december 2003 - 17:21 #4
Undskyld mit sene svar men har haft lidt travlt på det sidste med skole osv.
Men ja, den skal vise perioder over et år.
Avatar billede Slettet bruger
15. december 2003 - 23:14 #5
Her er noget, der skulle kunne bruges. Hvis du ikke skal bruge det på dansk, kan du bare fjerne setlocale-linien.

tidsafstand_tekst-funktionen lavede jeg sådan set bare som dokumentation for brugen af tidsafstand-funktionen, men jeg mente, at den var egentlig ganske anvendelig i sig selv.


<?php


$gavetid=mktime(18,30,0,12,24,2003,0);
setlocale(LC_TIME, "da_DK");
echo tidsafstand_tekst($gavetid);


function tidsafstand_tekst($tid){
  $afstand=tidsafstand($tid);

  $tekst='';
  if ($afstand['year']!=0){ $tekst.="{$afstand['year']} år, "; }
  if ($afstand['mon']!=0){ $tekst.="{$afstand['mon']} måneder, "; }
  if ($afstand['mday']!=0){ $tekst.="{$afstand['mday']} dage, "; }
  if ($afstand['hours']!=0){ $tekst.="{$afstand['hours']} timer, "; }
  if ($afstand['minutes']!=0){ $tekst.="{$afstand['minutes']} minutter, "; }
  if ($afstand['seconds']!=0){ $tekst.="{$afstand['seconds']} sekunder, "; }

  $tekst=preg_replace('/(.*),\s(.*?),\s$/', '\\1 og \\2', $tekst);

  if ($afstand['fremtid']) {
    $tekst="Der er " . $tekst . " til " . strftime('%c',$tid);
  } else {
    $tekst=strftime('%c',$tid) . " var for " . $tekst . " siden.";
  }

  return $tekst;

}

function tidsafstand($tid){
  if ($tid<time()){
    $sidst=getdate();
    $foerst=getdate($tid);
    $svar['fremtid']=FALSE;
  } else {
    $sidst=getdate($tid);
    $foerst=getdate();
    $svar['fremtid']=TRUE;
  }
  $svar['seconds']=$sidst['seconds']-$foerst['seconds'];
  if ($svar['seconds']<0){$svar['seconds']+=60;$sidst['minutes']-=1;}
  $svar['minutes']=$sidst['minutes']-$foerst['minutes'];
  if ($svar['minutes']<0){$svar['minutes']+=60;$sidst['hours']-=1;}
  $svar['hours']=$sidst['hours']-$foerst['hours'];
  if ($svar['hours']<0){$svar['hours']+=24;$sidst['mday']-=1;}
  $svar['mday']=$sidst['mday']-$foerst['mday'];
  if ($svar['mday']<0) {
    if ($svar['fremtid']){
      $temp=date('t',mktime(0,0,0,$sidst['mon']-1,1,$sidst['year']));
    } else {
      $temp=date('t',mktime(0,0,0,$foerst['mon'],1,$foerst['year']));
    }
    $svar['mday']+=$temp;
    $sidst['mon']-=1;
  }
  $svar['mon']=$sidst['mon']-$foerst['mon'];
  if ($svar['mon']<0){$svar['mon']+=12;$sidst['year']-=1;}
  $svar['year']=$sidst['year']-$foerst['year'];

  return $svar;
}


?>
Avatar billede Slettet bruger
22. december 2003 - 06:03 #6
Hallo?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester