note 26530 added to function.strtotime
| From: | php-general at lists dot php dot net | Date: | Sun, 03 Nov 2002 17:23:21 +0000 |
| Subject: | note 26530 added to function.strtotime | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-38925@lists.php.net to get a copy of this message | ||
Pour les personnes françaises, une fonction qui traduit pour pouvoir utiliser strtotime() en
français :
function translate_date($date) {
//traduction prochain, dernier
if (preg_match("%\s*(.*)\s*[Pp]rochain[e]?\s*(.*)%", $date, $regs)) {
$date = 'next '.$regs[1].$regs[2] ;
} elseif (preg_match("%\s*(.*)\s*[Dd]ernier\s*(.*)%", $date, $regs)) {
$date = 'last '.$regs[1].$regs[2] ;
}
//mise en minusclue (pour ne pas avoir de complication)
$date = strtolower($date) ;
//Trad. jours
//mise en place des arrays (un anglais, l'autre français qui vont servir pour la trad)
//preg_replace utilisé pour prende le mot entier et éviter par ex demain = deMayn...
$j_fr = array('lundi', 'mardi', 'mercredi', 'jeudi',
'vendredi', 'samedi', 'dimanche') ;
$j_en = array('monday', 'tuesday', 'wednesday', 'thursday',
'friday', 'saturday', 'sunday') ;
//traduction
for ($i=0; $i < 7; $i++) {
$date = preg_replace("/\b".$j_fr[$i]."\b/", "
".ucfirst($j_en[$i])." ", $date) ;
}
//Trad. mois
$m_fr = array('janvier', 'février', 'mars', 'avril',
'mai', 'juin', 'juillet', 'août', 'septembre',
'octobre', 'novembre', 'décembre' ) ;
$m_en = array('january', 'february', 'march', 'april',
'may', 'june', 'july', 'august', 'september',
'october', 'november', 'december' ) ;
for ($i=0; $i < 12; $i++) {
$date = preg_replace("/\b".$m_fr[$i]."\b/", "
".ucfirst($m_en[$i])." ", $date) ;
}
//Trad. abréviations mois
//Traduction fév->fev et aoû->aou
$date = preg_replace("/\bfév\b/", 'fev' , $date) ;
$date = preg_replace("/\baoû\b/", 'aou' , $date) ;
$abr_m_fr = array('jan', 'fev', 'mar', 'avr',
'mai', 'juin', 'juil', 'aou', 'sep',
'oct', 'nov', 'déc') ;
$abr_m_en = array('jan', 'feb', 'mar', 'apr',
'may', 'jun', 'jul', 'aug', 'sep',
'oct', 'nov', 'dec') ;
for ($i=0; $i < 12; $i++) {
$date = preg_replace("/\b".$abr_m_fr[$i]."\b/", "
".ucfirst($abr_m_en[$i])." ", $date) ;
}
//Autre
$date = preg_replace("/\bdemain\b/" , ' Tomorrow ' , $date) ;
$date = preg_replace("/\bhier\b/" , ' Yesterday ', $date) ;
$date = preg_replace("/\baujourd\'hui\b/", ' Today ' , $date) ;
$date = preg_replace("/\bmaintenant\b/" , ' now ' , $date) ;
$date = preg_replace("/\bjours\b/" , ' Days ' , $date) ;
$date = preg_replace("/\bjour\b/" , ' Day ' , $date) ;
$date = preg_replace("/\bsemaines\b/" , ' Weeks ' , $date) ;
$date = preg_replace("/\bsemaine\b/" , ' Week ' , $date) ;
$date = preg_replace("/\bmois\b/" , ' Months ' , $date) ;
$date = preg_replace("/\ban\b/" , ' Year ' , $date) ;
$date = preg_replace("/\bans\b/" , ' Years ' , $date) ;
$date = preg_replace("/\bheures\b/" , ' Hours ' , $date) ;
$date = preg_replace("/\bheure\b/" , ' Hour ' , $date) ;
$date = preg_replace("/\bminutes\b/" , ' Minutes ' , $date) ;
$date = preg_replace("/\bminute\b/" , ' Minute ' , $date) ;
$date = preg_replace("/\s+à\s+/" , ' ' , $date) ;
$date = preg_replace("/\bla\b/" , ' ' , $date) ;
$date = preg_replace("/(\d+)h(\d+)/" , "\\1:\\2" , $date) ;
$date = preg_replace("/(\d+)h/" , "\\1" , $date) ;
$date = preg_replace("/(\d+)min/" , "\\1" , $date) ;
$date = preg_replace("/(\d+)m/" , "\\1" , $date) ;
return $date ;
}
Vous n'avez plus qu'a traduire la date avant de la mettre dans le strtotime.
Ex : $date = "Lundi prochain" ;
$date = translate_date($date) ;
strtotime($date) ;
--
http://www.php.net/manual/en/function.strtotime.php
http://master.php.net/manage/user-notes.php?action=edit+26530
http://master.php.net/manage/user-notes.php?action=delete+26530
http://master.php.net/manage/user-notes.php?action=reject+26530