Verfier le format date_heure avec perl!
J aimerais bien faire un test sur une chaine pour determiner est ce qu elle a un format date_heure!! Avec plusieurs possibilites offertes, comme par exemple les formats suivantes:
2004/05/20 15:12:02
03/15/2004 10:14:52
20040520151202
Mar 16/2003 15:12AM
Donc le teset que doit me retournet que ces retourner chaines ont un format date_heure!
Aidez moi svp, suis bloque, y a plusieurs format!! :(
test de la validité d'une date
J'ai touvé ces deux modules
- Time::DaysInMonth
Time::ParseDate
Code:
1 2 3
| use Time::DaysInMonth;
$days = days_in($year, $month_1_to_12);
$leapyear = is_leap($year); |
http://cpan.uwinnipeg.ca/htdocs/Time...ysInMonth.html
http://cpan.uwinnipeg.ca/htdocs/Time...ParseDate.html
Je ne peux tester ces deux modules ne font pas partie de la distribution ActivePerl
Sinon tu peux faire la vérification à la main comme un grand
- vérifier que le numéro du mois $numMois est compris entre 1 et 12
à partir de $numMois tu peux vérifier $numJour pour cela tu peux utiliser le tableau $nbJoursMois
Code:
@nbJoursMois=(31,28,31,30,31,31,31,30,31,30,30);
la condition est
Code:
$numJour>=1 && $numJour<=$nbJoursMois[$numMois-1]
pour le mois de févier tu peux écrire une fonction estBissextile qui retourne vrai si l'année passée en paramètre est bissextile. Une année est bissextile si elle est divisible par 4 et par par 100 ou divisible par 400
(2000 et 2400 sont bissextiles, 1900 et 2100 ne le sont pas)
A partir de la valeur retournée par cette fonction le nombre de jours de février est 28 ou 29
:D
Je te laisses chercher, fais moi signe si tu cales