Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Aikojen vertailu (PHP)

FlashBack [22.10.2007 15:58:57]

#

Mooron,

Eli haen kannasta päivämäärän (deadline) ja vertaan sitä nykyiseen päivämäärään. Jos päivämäärä on suurempi kuin deadlinen niin raja on ylitetty. Ok. Tähän asti ihan selvä, mutta pitäs vielä saada jotenkin selville, että onko deadlineen enää viikko aikaa. Yritin tehdä tämän niin, että vähensin päivistä 7 päivää, mutta tulipa mieleeni, että homma ei toimi kun saattaa mennä myös pakkasen puolelle.

Tässä koodi. Saattaa olla aika purkkaa ;)

$todays_date = date("Y-m-d");

$exp = explode("-", $deadline);
$day = $exp[2] - 7;

$warn_date = date($exp[0] ."-". $exp[1] ."-". $day);
$today = strtotime($todays_date);
$expiration_date = strtotime($deadline);
$warn_date = strtotime($warn_date);

if ($today > $expiration_date)
{
$class = " class='red' ";
}
else if ($today > $warn_date)
{
$class = " class='orange' ";
}
else
{
$class = " class='black' ";
}

Eli tuloksen mukaan näytetään visuaalisesti projektin tila. Jos deadline on ylitetty, näytetään punaista ja jos deadlineen on enää 7 päivää (tai vähemmän) aikaa näytetään oranssia. Mutta juuri tuossa kohtaa siis tämä onkelma.

Antti Laaksonen [22.10.2007 16:09:28]

#

Aikoja kannattaa käsitellä aikaleimoina, jolloin vertailu on helppoa:

<?php

// tämänhetkinen aikaleima
$aikanyt = time();
// tavoiteajan (1.11.2007) aikaleima
$tavoite = mktime(0, 0, 0, 11, 1, 2007);

if ($aikanyt > $tavoite) {
    echo "Tavoiteaika on ylitetty!";
} else if ($aikanyt + 60 * 60 * 24 * 7 > $tavoite) {
    echo "Aikaa on enää alle viikko!";
} else {
    echo "Aikaa on vielä hyvin!";
}

?>

Aikaleima ilmoittaa, kuinka monta sekuntia on kulunut vuoden 1970 alusta, joten jos aikaleimaa haluaa kasvattaa vaikka viikolla, siihen pitää lisätä yhtä monta sekuntia kuin on viikossa eli 60 * 60 * 24 * 7.

pistemies [22.10.2007 16:19:22]

#

Tähän tapaan:

$week = 3600*24*7;

$aika = $expiration_date-$todays_date;

if($aika > $week){
echo "yli viikko";
}
elseif($aika < $week && $aika >0){
 echo "alle viikko";
}

edit: Antti ehti enste....

Vastaus

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

Tietoa sivustosta