kontrola datumu

Petr Vileta petr na practisoft.cz
Čtvrtek Červenec 24 01:06:32 CEST 2003


> Mno, a jak znamo, v Perlu je vzdy vice cest, me napadla tato:
>
> $day = 29;
> $mon = 2;
> $year = 2003;
>
> use Time::Local;
>
> $time = timelocal(0, 0, 0, $day, $mon-1, $year-1900);
> ($a, $a, $a, $day2, $mon2, $year2, $a, $a, $a) = localtime($time);
>
> if (($day2 == $day) && ($mon2 == ($mon-1)) && ($year2 == ($year-1900)))
> {print "OK";}
> else {print "KO";}
No tohle mi pripada pouzitelnejsi, nez ten druhy napad v Perlu. Jednak
nepouzivam modul POSIX a za druhe si nejsem jisty, zda tam musi byt ono "use
strict", kdyz se POSIX pouzije. Ja totiz "use strict" ale vubec nemuzu
potrebovat :-)
Naopak Time::Local je obsazeno v CGI modulu a ten kazdopadne pouzivat z
ruznych duvodu musim.
Jeste bych to vylepsil takhle
$time = $day < 32 ? timelocal(0, 0, 0, $day, $mon-1, $year-1900) : 0;

>    Rozhodne bych s tim neobtezoval MySQL server a resil to na urovni
Perlu.
No ja stejne nejake selecty delam, takze k "select neco, neco_jineho,...
from odnekud" proste jeste prilepim dotaz na datum ;-)

> 1..31 at skript radek.", kterou by se dalo vyuzit. Nevyhoda je v tom, ze
pry
> timelocal
> na soucasnych pocitacich zpracovava data jen do roku 2038.
To mi bude ... kalkulacka ... 82 let a spis budu mit starost jak se vycurat
a pri tom nepokakat, nez jestli funguje moje kontrola datumu :-)

>    Na tema manualu a knih k Perlu bych rekl jen tolil, ze me sveho casu
take
> uvadely
> v zoufalstvi odkazy na knihovni moduly C. Mel jsem to ale jednodussi,
> protoze Cecko
> znam take. Nicmene kdyz chce clovek znat nejake detaily, je to pro
> greenhorna k nicemu.
Taky jsem kdysi neco v C, respektive Borland C++ delal, ale uz je to dost
dlouho a kdyz to clovek nepouziva, zapomina.

> Vse se zmeni v okamziku, kdy si nainstalujete Linux, ten totiz obsahuje
> manualove stranky
> k temto modulum a tak pokud vas O'Reily odkaze na ctime(3), tak jednoduse
> zadate
> "man 3 ctime" a prectete si to. Tyhle podrobnosti v knihach byt nemohou,
> protoze pak
> by takova "Programovani v jazyce Perl" nemela jen 700 stranek, ale 7 000
:-)
Jenze kdyz delam ve windoze a jediny linuxovy stroj v dosahu je webserver s
minimem manualu, tak po zadani dle vaseho navodu dostanu tak akorat "neni
zadny zaznam pro ctime" :-)

--
Petr




Další informace o konferenci Test