Fonction date() en français: fdate()

Contenu du snippet

J'ai vu qu'il existe beaucoup de codes de conversion de date, mais aucun ne me convient. Soit les fonctions font 10 pages, soit elles sont incomplètes... C'est pour ça que j'ai écrit la mienne. Elle se base sur la fonction date() de PHP, prends les mêmes paramètres et accepte les mêmes formats, plus un: la date RFC 2822 en français (format R).

Voici donc la fonction. Elle n'est pas très commentée, mais c'est uniquement un série de tests...

Source / Exemple :


function fdate($format, $timestamp = 0) {
    $days =      array('Mon' => 'Lun', 'Tue' => 'Mar', 'Wed' => 'Mer', 'Thu' => 'Jeu', 'Fri' => 'Ven', 'Sat' => 'Sam', 'Sun' => 'Dim',
                            'Monday' => 'Lundi', 'Tuesday' => 'Mardi', 'Wednesday' => 'Mercredi', 'Thursday' => 'Jeudi', 'Friday' => 'Vendredi', 'Saturday' => 'Samedi', 'Sunday' => 'Dimanche');
    $months =    array('Jan' => 'Jan', 'Feb' => 'Fév', 'Mar' => 'Mars', 'Apr' => 'Avr', 'May' => 'Mai', 'Jun' => 'Juin', 'Jul' => 'Jui', 'Aug' => 'Aoû', 'Sep' => 'Sept', 'Oct' => 'Oct', 'Nov' => 'Nov', 'Dec' => 'Dec', 
                            'January' => 'Janvier', 'February' => 'Février', 'March' => 'Mars', 'April' => 'Avril', 'May' => 'Mai', 'June' => 'Juin', 'July' => 'Juillet', 'August' => 'Août', 'September' => 'Septembre', 'October' => 'Octobre', 'November' => 'Novembre', 'December' => 'Décembre');
    
    if ($timestamp == 0) $timestamp = time();
    
    $out = '';
      
    for ($n = 0; $n < strlen($format); $n++) {
      $c = substr($format, $n, 1);
      if (preg_match('/[aABcdDFghHiIjlLmMnOrRsStTUwWyYzZ]/', $c)) {
        // Format chr, convert it
        if ($c == 'a' || $c == 'A') {
          if (substr(strtolower(date($c, $timestamp)), 0, 1) == 'a') {
            $out .= 'matin';
          } else {
            $out .= 'après-midi';
          }
        } elseif ($c == 'D' || $c == 'l') {
          $out .= $days[date($c, $timestamp)];
        } elseif ($c == 'F' || $c == 'M') {
          $out .= $months[date($c, $timestamp)];
        } elseif ($c == 'S') {
          if (date($c, $timestamp) == 'st') {
            $out .= 'er';
          } else {
            $out .= 'ème';
          }
        } elseif ($c == 'R') {
          $out .= fdate('D, d M Y H:i:s O', $timestamp);
        } else {
          $out .= date($c, $timestamp);
        }
      } else {
        // No format chr, just print it.
        $out .= $c;
      }
    }
    
    return $out;
  }

echo fdate('a A B c d D F g h H i I j l L m M n O r R s S t T U w W y Y z Z R');

Conclusion :


Si vous rencontrer des bugs, faites-le moi savoir !

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.