Moinsen!
Ich ermittle so den letzten Tag eines Monats (eine Korrektur für den Dezember habe ich der Übersicht halber weggelassen):
use Time::Local;
$jahr=2013;
$monat=3; #Januar=1, Februar=2, ...
$tagessekunden=24*60*60;
($sek,$min,$std,$monatstag,$tempmonat,$tempjahr,$wochentag,$jahrestag,$sommerzeit)=localtime(timelocal(0,0,0,1,$monat,$jahr)-$tagessekunden);
print $monatstag;
Also
- Den 1. Tag des Folgemonats, 00:00:00 Uhr an timelocal übergeben (Januar entspricht 0, für den Folgemonat muss also 1 übergeben werden)
- Vom ermittelten Timestamp 1 Tag (24*60*60 Sekunden) abziehen
- Ergebnis in Datum/Uhrzeit umwandeln, daraus den Monatstag verwenden
Das Ganze scheint wunderbar zu funktionieren - nur für März 2013 nicht. Der hat angeblich nur 30 Tage.
Wo liegt mein Fehler?
Viele Grüße,
Norbert