Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Viikonpäivän selvittäjä

Juice [28.09.2004 21:51:46]

#

Huono viritelmä - tämän näemmä pystyi tekemään helpomminkin.

tsuriga [29.09.2004 11:46:15]

#

'Alla oleva' tulee erikseen. Ja sitten laiskan koodarin ohjeita, switchin voi helposti korvata taulukolla, jossa viikonpäivät ovat noissa indekseissä ja

<?php
      if($aikaleima>=$nykyhetki){
         $tempus = " on ";
      }
      else{
         $tempus = " oli ";
      }
?>

voi korvata näin:

<?php
$tempus = ($aikaleima>=$nykyhetki) ? " on " : " oli ";
?>

Melkein saman tekee seuraava 'näppärä' funkkari ja funktiokutsu :).

<?php
function getDay($aika) {
  return (((mktime(0,0,0,(int)date("m"),(int)date("d"), (int)date("Y"))-$aika)<=0) ? "on" : "oli")." ".trim(substr("sunnuntai  maanantai  tiistai    keskiviikkotorstai    perjantai  lauantai", 11*(int)date("w",$aika),11));
  }
echo substr($_GET['aika'],0,2).".".substr($_GET['aika'],2,2).".".substr($_GET['aika'],4,4)." ".getDay(mktime(0,0,0,(int)substr($_GET['aika'],2,2),(int)substr($_GET['aika'],0,2),(int)substr($_GET['aika'],4,4))).".";
?>

Antti Laaksonen [29.09.2004 12:24:45]

#

Vähän turhan hankalasti tehty: time() palauttaa suoraan senhetkisen ajan, date("w", $aika) ilmoittaa viikonpäivän numeron. Ja switch-rakennetta ei kannata käyttää koskaan, taulukko on paljon parempi vaihtoehto.

Juice [29.09.2004 18:42:20]

#

Sitä minäkin, että vähän turhan vaikeeksi olisi ollut tehty :P

Time():a en käyttänyt sen sisältämien sekunti-minuutti-tunti-infon takia, joka olisi aiheuttanut pyöristysvirheitä.

No, ainakin tästä tuli opittua jotakin päivämääristä, joka oli ennen minulle lähes koskematon alue PHP:ssä lukuunottamatta päivän tulostusta. Switch tuli ulkomuistista :p

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta