<?php
|
/*---------------------------------------------------------------*/
|
/*
|
Titre : Transforme une date dans un format littéraire et sympa
|
|
URL : https://phpsources.net/code_s.php?id=180
|
Auteur : R@f
|
Date édition : 13 Aout 2006
|
Date mise à jour : 11 Aout 2019
|
Rapport de la maj:
|
- fonctionnement du code vérifié
|
- maintenance du code
|
- modification de la description
|
*/
|
/*---------------------------------------------------------------*/
|
|
function prettyDate( $timestamp, $lang = 'fr' )
|
{
|
|
|
if( !defined( '__LANG_PHP__' ) )
|
{
|
define( '__LANG_PHP__', 1 );
|
|
$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}'),
|
);
|
}
|
|
|
// 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, 0 );
|
}
|
// aujourd'hui ou hier
|
else if( $ecart < 86400 && $date[0] == $date_day[0] )
|
{
|
// le matin
|
if( date( 'a', $timestamp ) == 'am' )
|
{
|
if( $date[3] < 5 )
|
$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[0] == $date_day[0] - 1 )
|
{
|
// le matin
|
if( date( 'a', $timestamp ) == 'am' )
|
{
|
if( $date[3] < 5 )
|
$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] < 5 )
|
$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[0] == 1 )
|
$suffix = 'st';
|
else if( $date[0] == 2 )
|
$suffix = 'nd';
|
else if( $date[0] == 3 )
|
$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[0];
|
$array_replace[] = $prettyDateLang[ $lang ][ 'mois'][ $date[1] - 1 ]
|
;
|
$array_replace[] = $date[2];
|
$array_replace[] = $suffix;
|
}
|
|
return str_replace( $array_search, $array_replace, $txt );
|
}
|
?>
|
|
|
Invité
11 Sept 2010 à 01:35un grand merci
Mercier133
06 Jan 2010 à 14:38super
Ludvig
17 Mars 2008 à 09:21Ca 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.
KOogar
16 Mars 2008 à 19:23Voilà, 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 ;)
Ludvig
13 Mars 2008 à 09:55Merci 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.
Ludvig
13 Mars 2008 à 09:41Merci 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.
Aminodev
12 Mars 2008 à 15:54As-tu créé le fichier lang.php ??
Ludvig
12 Mars 2008 à 14:57Salut,
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.