Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: date('t')

Sivun loppuun

manninen [17.02.2011 21:16:51]

#

date('t')

kertoo montako päivää kuukaudessa on, mutta mikä kertoo montako päivää halutussa kuukaudessa on?

Jokotai [17.02.2011 21:19:28]

#

https://www.php.net/manual/en/function.date.php

manninen [17.02.2011 21:30:54]

#

Tuttu sivu, mutta meikäläisen yritys onnistui saamaan kaikki kuukaudet venymään 31 päivään, eikä sitä kukaan halua.

Merri [17.02.2011 21:45:22]

#

Katso mktime-funktiota, jonka tulos syötetään date-funktiolle.

Metabolix [17.02.2011 21:46:42]

#

Mitähän ihmettä olet yrittänyt siihen tunkea? Voit luoda aikaleiman esimerkiksi mktime-funktiolla tai strtotime-funktiolla.

date('t', strtotime("2011-02-01 00:00:00"));

Päivien määrän voi laskea helposti myös itse, kun tiedossa on kuukausi ja karkausvuosia varten vuosiluku.

manninen [17.02.2011 22:40:13]

#

Varmasti voi helposti laskeakkin, voihan sitä rakentaa vaikka monimutkaisen ja typerän if-rakenteen ;)

Eikös tuo ilmoittamasi esimerkki kuitenkin nyt ota itsestään huomioon karkausvuoden?

$MontakoPaivaaKuukaudessaOn = date('t', strtotime("$vuosi-$kuukausi-01 00:00:00"));

eq [17.02.2011 22:50:37]

#

manninen kirjoitti:

Varmasti voi helposti laskeakkin, voihan sitä rakentaa vaikka monimutkaisen ja typerän if-rakenteen ;)

No ei siitä nyt järin monimutkainen tulisi.

manninen [02.03.2011 15:01:14]

#

manninen kirjoitti:

date('t')

kertoo montako päivää kuukaudessa on, mutta mikä kertoo montako päivää halutussa kuukaudessa on?

Eikös tämä ota huomioon myös karkausvuoden?

Miten karkausvuosi katsotaan. Näyttäisi siltä, että ei mene ihan date('L'):llä.

jos käyttää date('t') funktiota päivämäärien luomiseen tuleeko silloin itse huomioida karkausvuosi?

Metabolix [02.03.2011 16:25:50]

#

Tarvittaessa kenen tahansa koodarin pitäisi osata laskea, onko annettu vuosi karkausvuosi. Ehdot löytyvät helposti esimerkiksi Wikipediasta: 4:llä jaolliset ovat, paitsi 100:lla jaolliset eivät, paitsi 400:llä jaolliset taas ovatkin. Jos tämän logiikan toteuttaminen tuntuu aivan mahdottomalta, kannattaa palata PHP:n perusoppaiden ääreen.

Onko kohtuuttoman vaikeaa selvittää date-funktion toiminta itse esimerkiksi testaamalla vuosien 2000 ja 2001 helmikuita? Entä mikä olisi looginen arvauksesi, kun kerran kyseessä on nimenomaan ajan käsittelyyn erikoistunut funktio?

manninen [02.03.2011 22:32:32]

#

Metabolix kirjoitti:

Tarvittaessa kenen tahansa koodarin pitäisi osata laskea, onko annettu vuosi karkausvuosi. Ehdot löytyvät helposti esimerkiksi Wikipediasta: 4:llä jaolliset ovat, paitsi 100:lla jaolliset eivät, paitsi 400:llä jaolliset taas ovatkin. Jos tämän logiikan toteuttaminen tuntuu aivan mahdottomalta, kannattaa palata PHP:n perusoppaiden ääreen.

Ennen ei ole tarvinnut, mutta nyt oli jo ihan pakko.

if($_REQUEST['vuosi'] % 4 == 0 && ($_REQUEST['vuosi'] % 100 != 0 || $_REQUEST['vuosi'] % 400 == 0)){
  echo 'On';
}
else{
  echo 'Ei';
}

lainaus:

Onko kohtuuttoman vaikeaa selvittää date-funktion toiminta itse esimerkiksi testaamalla vuosien 2000 ja 2001 helmikuita? Entä mikä olisi looginen arvauksesi, kun kerran kyseessä on nimenomaan ajan käsittelyyn erikoistunut funktio?

Ei ole kohtuuttoman vaikeaa selvittää! Olen pahoillani, että tuhlasin aikaasi kysymyllä, enkä selvittänyt asiaa. Ei vain heti juolahtanut mieleen, mutta onneksi joku muistuttaa.

echo $testi1 = date('t', strtotime("2000-02-01 00:00:00"));
echo $testi2 = date('t', strtotime("2001-02-01 00:00:00"));

Hienoa se toimii, kuten loogisesti ajattelinkin, Onhan kyseessä aikaa käsittelevä funktio.

Mutta sitä et sinäkään voi Metabolix kieltää, että on parempi näyttää tyhmyytensä ja kysyä, kuin olla kysymättä ja jäädä tyhmäksi.

Vaikka vastaus joskus on looginen, ei se ole ilmeinen.

Metabolix [02.03.2011 22:47:57]

#

manninen kirjoitti:

Mutta sitä et sinäkään voi Metabolix kieltää, että on parempi näyttää tyhmyytensä ja kysyä, kuin olla kysymättä ja jäädä tyhmäksi.

Totta kai. Minusta on myös parempi vastata yleispätevillä ohjeilla ("kokeile itse") kuin pelkästään tähän yksittäiseen tapaukseen sopivalla vastauksella ("kyllä"). Ehkä muutaman kerran jälkeen muistat aloittaa loogisen mallin keksimisestä ja testaamisesta, niin säästät lopulta paljon myös omaa aikaasi. Sellaista se ohjelmointi on. :) Tietenkin vastaisin toisin, jos asiaa ei olisi näin helppo selvittää omin avuin.

Yucca [02.03.2011 23:08:20]

#

Tietysti on hyvä osata karkausvuosien laskeminen (varsinkin ylimääräiset oikaisupoikkeukset), mutta ehkä kuitenkin voisi käyttää valmiita välineitä luottaen siihen, että Javascriptin toteutus toimii oikein:

function daysInMonth(iMonth, iYear)
{
	return 32 - new Date(iYear, iMonth, 32).getDate();
}

manninen [03.03.2011 07:25:13]

#

Yucca kirjoitti:

Tietysti on hyvä osata karkausvuosien laskeminen (varsinkin ylimääräiset oikaisupoikkeukset), mutta ehkä kuitenkin voisi käyttää valmiita välineitä luottaen siihen, että Javascriptin toteutus toimii oikein:

function daysInMonth(iMonth, iYear)
{
	return 32 - new Date(iYear, iMonth, 32).getDate();
}

Javascriptiin en lähtisi luottamaan, koska se ei välttämättä päällä ole.

Ja olet Metabolix ihan oikeassa sen suhteen, että vähän kannattaa patistaa jos helppoja kyselee :-)


Sivun alkuun

Vastaus

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

Tietoa sivustosta