Skip to content

Instantly share code, notes, and snippets.

@nicoxxxcox
Created May 6, 2019 13:00
Show Gist options
  • Save nicoxxxcox/3124399ae28e42a2864c5fee4d3e39ca to your computer and use it in GitHub Desktop.
Save nicoxxxcox/3124399ae28e42a2864c5fee4d3e39ca to your computer and use it in GitHub Desktop.
A class that return the relative time in French
<?php
class relativeTime
{
/**
* Methode qui renvoie le temps relatif d'une date/heure à partir d'un timestamp
* @param $datetime
* @return string
*/
public static function getRelativeTime($datetime)
{
/* Fonction crrée par GauldoMagique et dispo à : https://codes-sources.commentcamarche.net/source/48798-afficher-une-date-relative-en-francais */
// Initialisation
$secondes = time() - $datetime; $secondes>1 ? $secondes .= ' secondes' : $secondes .= ' seconde';
$minutes = '';
$heures = '';
$jours = '';
$dateRelative = 'Il y a '. $secondes;
// Début du balayage
if ($secondes > 60) { // S'il y a plus d'une minute
$minutes = floor($secondes/60) ; $minutes>1 ? $minutes .= ' minutes' : $minutes .= ' minute';
$secondes = floor($secondes%60) ; $secondes>1 ? $secondes .= ' secondes' : $secondes .= ' seconde';
$dateRelative = 'Il y a '. $minutes .' et '. $secondes;
}
if ($minutes > 60) { // S'il y a plus d'une heure
$heures = floor($minutes/60) ; $heures>1 ? $heures .= ' heures' : $heures .= ' heure';
$minutes = floor($minutes%60) ; $minutes>1 ? $minutes .= ' minutes' : $minutes .= ' minute';
$dateRelative = 'Il y a '. $heures .' et '. $minutes;
}
if ($heures > 24) { // S'il y a plus d'un jour
$jours = floor($heures/24) ; $jours>1 ? $jours .= ' jours' : $jours .= ' jour';
$heures = floor($heures%24) ; $heures>1 ? $heures .= ' heures' : $heures .= ' heure';
$dateRelative = 'Il y a '. $jours .' et '. $heures;
}
if ($jours > 7) { // S'il y a plus d'une semaine, on affiche la date normale
$mois = date("m",$datetime)-1;
$calendrier = array('janvier','février','mars','avril','mai','juin','juillet','aout','septembre','octobre','novembre','décembre');
$jour = date("j",$datetime);
$mois = $calendrier[$mois];
/*date("Y",$datetime) != date("Y") ? */$annee = date("Y",$datetime) /* : $annee = '' */;
$dateRelative = 'Le '. $jour .' '. $mois .' '. $annee;
}
return $dateRelative;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment