détail de la classe

* * @name nom de la classe * @author Nom de l'auteur * @link * @copyright Prénom Nom Année * @version 1.0.0 * @package Nom du package */ class WDate { private static $tabMoisEnLettres = array( 1=>'Janvier', 2=>'Février', 3=>'Mars', 4=>'Avril', 5=>'Mai', 6=>'Juin', 7=>'Juillet', 8=>'Août', 9=>'Septembre', 10=>'Octobre', 11=>'Novembre', 12=>'Décembre'); /** Retourne le numéro du mois donné au format texte (janvier, mars, etc...) * @param string Mois en toute lettres (janvier, mars, etc...) * @return string Mois en Chiffe (1, 3, 12) / false en cas d'erreur */ public function getNumMois($moisEnLettres) { foreach (self::$tabMoisEnLettres as $num=>$mois) $tabMoisSansAccents[$num]=strtr($mois, 'ééû','eeu'); return array_search(ucfirst(strtolower(strtr($moisEnLettres, 'ééû','eeu'))), $tabMoisSansAccents); } /** Retourne le libellé nu numéro du mois passé en paramètre * @param int $moisEnChiffre * @return string Libellé du mois / false si le mois passé en paramètre est invalide */ public function getLibelleMois($moisEnChiffre) { if ($moisEnChiffre>0 && $moisEnChiffre<13) return self::$tabMoisEnLettres[$moisEnChiffre]; return false; } /** * Conversion de formats de dates selon les formats de dates définits en php * @param string Format de la date d'entrée * @param string Format de la date de sortie * @param string Date d'entrée * @return string Date formatée */ public function dateT($formatIN, $formatOUT, $date) { $M=''; switch ($formatIN) { case 'd M Y': $tmp=explode(' ', $date); $d=str_replace('1er', '1', $tmp[0]); $m=getNumMois($tmp[1]); $Y=$tmp[2]; break; case 'dMY': $Y = substr($date,-4); if (substr($date,0,3)=='1er') { $d=1; $posM=3; } elseif (is_numeric(substr($date,1,1))) { $d=substr($date,0,2); $posM=2; } else { $d=substr($date,0,1); $posM=1; } $M = substr($date, $posM, strlen($date)-4-$posM); $m = self::getNumMois($M); break; case 'Ymd': $d = substr($date,6,2); $m = substr($date,4,2); $Y = substr($date,0,4); break; case 'Y-m-d': $d = substr($date,8,2); $m = substr($date,5,2); $Y = substr($date,0,4); break; case 'd/m/Y': $d = substr($date,0,2); $m = substr($date,3,2); $Y = substr($date,6,4); break; default: return $date; } if ($m*1>0 && $m*1<10) $m='0'.($m*1); if ($d*1>0 && $d*1<10) $d='0'.($d*1); switch ($formatOUT) { case 'd/m/Y': return $d.'/'.$m.'/'.$Y; break; case 'm/Y': return $m.'/'.$Y; break; //case 'M Y': return $this->tabMoisEnLettres[$m].' '.$Y; break; case 'Y': return $Y; break; case 'm': return $m; break; case 'd': return $d; break; case 'Ym': return $Y.$m; break; case 'Ymd': return $Y.$m.$d; break; case 'Y-m-d': return $Y.'-'.$m.'-'.$d; break; case 'Y/m/d': return $Y.'/'.$m.'/'.$d; break; default: return $date; } } /** Calcul de la date après application de la période textuelle (deux ans, six mois, quinze jours, etc...) * @todo Fonction ne fonctionnant qu'avec un chiffre en un seul mot du genre dix mais pas quatre vingt dix !!! * @param date $dateIN au format Ymd * @param string $period (ex : cinq mois, six ans, un jour) * @return date */ function period2Days($dateIN, $period) { $dateV=self::dateT('Ymd', 'Ymd', $dateIN); if ($dateV<>$dateIN) return NULL; $d=substr($dateIN,6,2); $m=substr($dateIN,4,2); $Y=substr($dateIN,0,4); $period=trim(strtr($period, "-.,", ' ')); if ($period=='') return NULL; $tabP=explode(' ', $period); $chiffre=WChiffes::ChiffresEnLettres($tabP[0]); switch (end($tabP)) { case 'mois': $dateOUT=date('Ymd', mktime(0, 0, 0, $m+$chiffre, $d, $Y)); break; case 'an': case 'ans': $dateOUT=date('Ymd', mktime(0, 0, 0, $m, $d, $Y+$chiffre)); break; case 'jour': case 'jours': $dateOUT=date('Ymd', mktime(0, 0, 0, $m, $d+$chiffre, $Y)); break; default: $dateOUT=NULL; } return $dateOUT; } } ?>