Vous êtes ici Codes PHP et MySQL > Date-Heure > Transformer une date dans un format littéraire et...

 

Transformer une date dans un format littéraire et sympa

Ce code sert à transformer une date d'un format jj/mm/aaaa hh:mm:ss dans un format sympa, genre:
hier soir, ce matin, il y a une semaine, ...

Petite gestion multilangues!
 
R@f
[17] sources en PHP voir
Code vu 8804 fois
Enregistré le 13 Aout 2006
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Transformer une date dans un format littéraire et sympa
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Transformer une date dans un format littéraire et sympa   */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts180-PHP.htm              */
/* Auteur         : R@f                                                       */
/* Date édition   : 13 Aout 2006                                              */
/*                                                                            */
/******************************************************************************/

function prettyDate$timestamp$lang 'fr' )
{
    include 'lang.php';
    
    // si le code langue utilisé n'est pas défini
    if( !isset( $prettyDateLang$lang ] ) )
        return date'd/m/Y H:i:s' );
    
    // date
    $date explode'/'date'd/m/Y/H'$timestamp ) );
    $date[4] = $prettyDateLang$lang ][ 'jours' ][ date'w'$timestamp ) ];
    
    // date actuelle
    $date_day explode'/'date'd/m/Y'time() ) );
    
    $array_search =    array();
    $array_replace = array();
    
    // écart entre la date et la date actuelle
    $ecart time() - $timestamp;
    
    // maitenant
    if( $ecart <= 300 )
        $txt $prettyDateLang$lang ][ 'now' ];
    // récemment --> minutes
    else if( $ecart 3000 )
    {
        $txt $prettyDateLang$lang ][ 'minutes' ];
        $array_search[] = '{minutes}';
        $array_replace[] = ceil$ecart 60 );
    }
    // il y a une heure
    else if( $ecart 7000 )
        $txt $prettyDateLang$lang ][ 'heure' ];
    else if( $ecart 10800 )
    {
        $txt $prettyDateLang$lang ][ 'heures' ];
        $array_search[] = '{heures}';
        $array_replace[] = round$ecart 3600,  );
    }
    // aujourd'hui ou hier
    else if( $ecart 86400 && $date[] == $date_day[] )
    {
        // le matin
        if( date'a'$timestamp ) == 'am' )
        {    
            if( $date[3] < )
                $txt $prettyDateLang$lang ][ 'cette_nuit' ];
            else
                $txt $prettyDateLang$lang ][ 'ce_matin' ];
        }
        // pas le matin
        else
        {
            if( $date[3] < 13 )
                $txt $prettyDateLang$lang ][ 'ce_midi' ];
            else if( $date[3] < 17 )
                $txt $prettyDateLang$lang ][ 'cette_am' ];
            else if( $date[3] < 21 )
                $txt $prettyDateLang$lang ][ 'ce_soir' ];
            else
                $txt $prettyDateLang$lang ][ 'cette_nuit' ];
        }
    }
    // hier
    else if( $ecart 172800 && $date[] == $date_day[] - )
    {
        // le matin
        if( date'a'$timestamp ) == 'am' )
        {    
            if( $date[3] < )
                $txt $prettyDateLang$lang ][ 'hier_soir' ];
            else
                $txt $prettyDateLang$lang ][ 'hier_matin' ];
        }
        // pas le matin
        else
        {
            if( $date[3] < 13 )
                $txt $prettyDateLang$lang ][ 'hier_midi' ];
            else if( $date[3] < 17 )
                $txt $prettyDateLang$lang ][ 'hier_am' ];
            else
                $txt $prettyDateLang$lang ][ 'hier_soir' ];
        }
    }
    // la semaine passée
    else if( $ecart <= 518400 ) 
    {
        // le matin
        if( date'a'$timestamp ) == 'am' )
        {    
            if( $date[3] < )
                $txt $date[4] . ' ' $prettyDateLang$lang ][ 'soir' ];
            else
                $txt $date[4] . ' ' $prettyDateLang$lang ][ 'matin' ];
        }
        // pas matin
        else
        {
            if( $date[3] < 13 )
                $txt $date[4] . ' ' $prettyDateLang$lang ][ 'midi' ];
            else if( $date[3] < 17 )
                $txt $date[4] . ' ' $prettyDateLang$lang ][ 'am' ];
            else
                $txt $date[4] . ' ' $prettyDateLang$lang ][ 'soir' ];
        }
    }
    else
    {
        $txt $prettyDateLang$lang ][ 'date'];
        
        switch( $lang )
        {
            case 'en':
                if( $date[] == )
                    $suffix 'st';
                else if( $date[] == )
                    $suffix 'nd';
                else if( $date[] == )
                    $suffix 'rd';
                else
                    $suffix 'th';
                break;
                
            case 'fr':
                $suffix '';
                break;
                
            default:
                $suffix '';
                break;
        }
        
        $array_search[] = '{jour}';
        $array_search[] = '{mois}';
        $array_search[] = '{annee}';
        $array_search[] = '{suffix}';
        
        $array_replace[] = $date[];
        $array_replace[] = $prettyDateLang$lang ][ 'mois'][ $date[1] - ];
        $array_replace[] = $date[2];
        $array_replace[] = $suffix;
    }
    
    return str_replace$array_search$array_replace$txt );
}
?>

/* fichier lang.php */

<?php
if( !defined'__LANG_PHP__' ) )
{
    define'__LANG_PHP__');
  
    $prettyDateLang =
        array(
            'fr' => array(
                'jours'    =>         array( 'dimanche''lundi''mardi''mercredi''jeudi''vendredi''samedi' ),
                'mois'    =>         array( 'janvier''février''mars''avril''mai''juin''juillet''août''septembre''octobre''novembre''décembre' ),
                'now'    =>         'Maintenant',
                'minutes'    =>        'Il y a {minutes} minute(s)',
                'heures'    =>        'Il y a {heures} heure(s)',
                'heure'    =>         'Il y a une heure',
                'cette_nuit'    =>        'Cette nuit',
                'ce_matin'    =>        'Ce matin',
                'ce_midi'    =>        'Ce midi',
                'cette_am'    =>        'Cette après-midi',
                'ce_soir'    =>        'Ce soir',
                'hier_soir'    =>        'Hier soir',
                'hier_matin'    =>        'Hier matin',
                'hier_midi'    =>        'Hier midi',
                'hier_am'    =>        'Hier après-midi',
                'soir'    =>         'soir',
                'matin'    =>         'matin',
                'midi'    =>         'midi',
                'am'    =>         'après-midi',
                'date'    =>        'le {jour} {mois} {annee}'),
            
            'en' => array(
                'jours'   =>        array( 'Sunday''Monday''Tuesday''Wednesday''Thursday''Friday''Saturday' ),
                'mois'   =>     array( 'January''February''March''April''May''June''July''August''September''October''November''December' 
),
                'now'    =>         'Now',
                'minutes'                =>        '{minutes} minute(s) ago',
                'heures'                =>        '{heures} hour(s) ago',
                'heure'   =>         'One hour ago',
                'cette_nuit'         =>        'This night',
                'ce_matin'             =>        'This morning',
                'ce_midi'                =>        'This midday',
                'cette_am'            =>        'This afternoon',
                'ce_soir'                =>        'This evening',
                'hier_soir'            =>        'Yesterday evening',
                'hier_matin'        =>        'Yesterday morning',
                'hier_midi'            =>        'Yesterday midday',
                 'hier_am'                =>        'Yesterday afternoon',
                 'soir'   =>         'evening',
                'matin'   =>         'morning',
                'midi'   =>         'midday',
                'am'       =>         'afternoon',
                'date'   =>        'The {jour}{suffix} of {mois} {annee}'),
    );
}
?>


 

Fonctions du code

: Détermine si une variable est affectée - (PHP 4, PHP 5)
: Formate une date/heure locale - (PHP 4, PHP 5)
: Coupe une chaîne en segments - (PHP 4, PHP 5)
: Retourne le timestamp UNIX actuel - (PHP 4, PHP 5)
: Crée un tableau - (PHP 4, PHP 5)
: Arrondit au nombre supérieur - (PHP 4, PHP 5)
: -
: Remplace toutes les occurrences dans une chaîne - (PHP 4, PHP 5)
: Vérifie l'existence d'une constante - (PHP 4, PHP 5)
: Définit une constante - (PHP 4, PHP 5)
Commentaires
Salut,
Je trouve ce code très sympas mais lorsque que je veux l'utiliser avec un:
$date = prettyDate( '11/10/1988 21:20:19', 'fr' );
echo $date;

j'obtients tout le temps : le 01 janvier 1970

J'aimerais donc savoir si c'est moi qui n'apelle pas le fonction comme il le faut ou si mon problème viens d'autre chose.

En vous remerciant d'avance.
 
As-tu créé le fichier lang.php ??
 
Merci de me répondre.

Donc oui j'ai créer les 2 fichiers date.php et lang.php
le $date et le echo sont mis dans le date.php apres la fonction.
 
Merci de me répondre.

Donc oui j'ai créer les 2 fichiers date.php et lang.php
le $date et le echo sont mis dans le date.php apres la fonction.
 
Voilà, R@f Vient de m'envoyer l'original par mail, je viens de le hoster. C'est tout chaud et il ne devrait plus y avoir de problème. I'm crossing my fingers ;)
 
Ca donne toujours la même chose mais j'ai résolu le problème avec la fonction strtotime:
$date = strtotime("2008-03-15 18:30:48");
echo prettyDate($date);
Et la ça marche nikel.
 
super
 
un grand merci
 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Date-Heure

 
 

PHP

 
 
 
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
    Editeur PHP
 
        Publicité