sivut.web

ohjeita web-sivuston tekijälle

Päivämäärät luettavaan muotoon

Lyhyesti: Eikö 25.6.2002 olekin helpompi lukea kuin 2002-06-25?

Tietokoneen tapa käsitellä päivämääriä eroaa merkittävästi ihmisen tavasta. Päivämäärät tallennetaan usein muotoon, jossa vuosi, kuukausi ja päivä on erotettu poikkiviivalla (esim. 2002-06-25). Merkintätapa on tehokas kun päivämäärät täytyy saada järjestykseen, mutta todettakoon, että esimerkiksi 25.6.2002 tai 25. kesäkuuta 2002 on ihmisille huomattavasti helpompaa ymmärrettävää. Poikkiviivoja käyttää päivämääräkentissään muunmuassa PHP:n kanssa paljon käytetty tietokantaohjelmisto MySQL.

Muuttaaksemme päivämäärän muotoa, täytyy vuodesta, kuukaudesta ja päivästä koostuva merkkijono hajottaa. Laitamme vuoden, kuukauden ja päivän jokaisen eri muuttujaan.

Käytämme PHP:n ereg-aliohjelmaa. Sen tehtävänä on löytää tietty merkkijono käyttäen säännöllisiä ilmauksia (regular expressions). Säännölliset ilmaukset ovat merkkijonoja, joissa on erikoismerkkejä, jotka esimerkiksi tässä tapauksessa vastaavat mitä tahansa numeroa.

function pvm($paivamaara) {
	ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $paivamaara, $regs);
	return "$regs[3].$regs[2].$regs[1]";
}

Ereg-funktio ottaa syötteekseen $paivamaara-muuttujan ja yrittää löytää siitä merkkijonon, joka koostuu neljästä numerosta, poikkiviivasta, kahdesta numerosta, poikkiviivasta ja kahdesta numerosta.

Puretaan käytetty säännöllinen ilmaisu osiin:

Ilmaisu Tarkoitus
([0-9]{4}) 4 numeroa väliltä 0-9
- poikkiviiva
([0-9]{2}) 2 numeroa väliltä 0-9
- poikkiviiva
([0-9]{2}) 2 numeroa väliltä 0-9

Mikäli ereg-funktio löytää kyseisen merkkijonon syötteestä, se tallentaa suluissa olevat ilmaisut omiksi muuttujikseen taulukkoon $regs. Nyt vuosiluku on muuttujassa $regs[1], kuukausi muuttujassa $regs[2] ja päivä muuttujassa $regs[3].

Sitten palautetaan päivämäärä selkokielisenä. Tässä esimerkissä käytetään muotoa PP.KK.VVVV, mutta järjestystä ja välimerkkejä (pisteitä) muuttamalla voi muotoa toki muuttaa mieleisekseen.

Funktiota voidaan käyttää seuraavasti:

<?

$pvm = "2002-06-25";

echo pvm($pvm);

?>

esimerkit/pvm.php
lähdekoodi

Lopuksi on hyvä mainita, että päivämäärät kannattaa pitää koodissa aina standardissa muodossa, esimerkiksi MySQL:n käyttämässä VVVV-KK-PP .muodossa. Käyttäjille tulisi kuitenkin näyttää selkokielinen vastine.

Tämä sivu on luotu 1.2.2003.


Käyttäjien kommentit

9.5.2003 14:48
Teemu

Hyvin tehty opas!! lIsää niitä red.wxwe juttuja!!!

17.5.2004 11:27
Teukka

Tuli tarpeeseen. Paljon kiitoksia..!

19.7.2004 11:05
Joku

Kivaa oli paljon apua!

Lisää oma kommentti


Juha-Pekka Järvenpää
jp@sivut.org
http://www.jarvenpaa.net/