Avatar billede phpbegynder2004 Nybegynder
02. oktober 2005 - 14:46 Der er 3 kommentarer og
1 løsning

time() problemer

Hej,

Jeg har prøvet at lave et script så tiden bliver vist udfra time().

Hvis noget er skrevet. f.eks idag skal der stå:
Idag kl. 14:40 istedet for 2 Oktober 2005 kl 14:40.

Dette har jeg gjort ved at sige at hvis "$POSTED TID" er større end "$Tid NU minus 24 timer" så er det idag.
Det giver dog problemer, da f.eks. 14:40 (tid nu) minus 24 timer er 14:40 igår. Så alt der er skrevet EFTER 14:40 igår, bliver til idag. Hvad kan jeg gøre for at rette dette problem?
Det samme hænder ved funktionen igår og i forgårs.

Håber det er forståeligt.

På forhånd mange tak!


Koden:
function dansk($stamp) {
$idag=time()-86400;
$igaar=time()-172800;
$forgaars=time()-259200;

if($stamp>$idag){
$status="idag";
  RETURN "I dag ".
      strftime('kl. %H:%M', $stamp);

}elseif($status!="idag" && $stamp>$igaar){
$status="igaar";
  RETURN "I går ".
      strftime('kl. %H:%M', $stamp);

}elseif($status!="idag" && $status!="igaar" && $stamp>$forgaars){
$status="forgaars";
  RETURN "I forgårs ".
      strftime('kl. %H:%M', $stamp);

}else{

    return strftime('%A d. ', $stamp).
        (int) strftime('%d', $stamp).
        strftime('. %B \'%y', $stamp);

}
}



Ps. Hvis der er noget der kan gøres mere effektivt må I meget gerne sige til!
Avatar billede coderdk Praktikant
02. oktober 2005 - 16:17 #1
Hvad med noget som:

function dansk($stamp)
{
  $check = date( 'Ymd', $stamp );
  $idag = date( 'Ymd' );
  $igaar = date( 'Ymd', strtotime( '-1 day' ) );
  $forgaars = date( 'Ymd', strtotime( '-2 day' ) );
  setlocale( LC_TIME, 'da_DK' );
  switch ( $stamp )
  {
      case $idag:
        $str = 'I dag';
        break;
      case $igaar:
        $str = 'I går';
        break;
      case $forgaars:
        $str = 'I forgårs';
        break;
      default:
        $str = strftime( '%A, den %d. %B %Y', $stamp );
  }
  return $str . strftime( ', kl. %H:%M', $stamp );
}
Avatar billede coderdk Praktikant
02. oktober 2005 - 16:17 #2
switch ( $stamp )

skulle have været:

  switch ( $check )
Avatar billede phpbegynder2004 Nybegynder
02. oktober 2005 - 18:04 #3
Mange tak! Læg et svar!

Er der en lettere måde at gøre det på, hvis jeg kun vil have klokkeslet med ved idag/igår/forgårs ?

function dansk($stamp)
{
  $check = date( 'Ymd', $stamp );
  $idag = date( 'Ymd' );
  $igaar = date( 'Ymd', strtotime( '-1 day' ) );
  $forgaars = date( 'Ymd', strtotime( '-2 day' ) );
  setlocale( LC_TIME, 'da_DK' );
  switch ( $check )
  {
      case $idag:
        $str = 'I dag';
        break;
      case $igaar:
        $str = 'I går';
        break;
      case $forgaars:
        $str = 'I forgårs';
        break;
      default:
        $str = strftime( '%A, d. %d. %B \'%y', $stamp );
$default=1;;
  }
if(!$default){
  return $str . strftime( ', kl. %H:%M', $stamp );
}else{
  return $str;
}
}

echo dansk($_GET[stamp]);
Avatar billede coderdk Praktikant
02. oktober 2005 - 18:10 #4
Tjah, før switch:

$default = false;

og i default case:

$default = true;
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