[PHP 5] Classe Date
Posté : 21 déc. 2005, 15:31
Bonjour,
Op une petite classe Date que je viens de faire. Certes c'est assez basique et assez spécifique à ce dont j'ai besoin pour le moment mais ça peut toujours être utile à certains d'entre nous/vous
Si jamais j'implémente d'autres fonctions et que ça vous intéresse, je mettrai à jour la classe :
Version statique :
Op une petite classe Date que je viens de faire. Certes c'est assez basique et assez spécifique à ce dont j'ai besoin pour le moment mais ça peut toujours être utile à certains d'entre nous/vous
Si jamais j'implémente d'autres fonctions et que ça vous intéresse, je mettrai à jour la classe :
Version statique :
<?php
/**
* Classe Date
* -----------
* Permet d'effectuer des p'tits calculs a partir d'une date
* --------------------------
* @author Ouaibou (Laurent.P)
* @version 2005.12.21
*/
class Date {
/**
* Converti une date au format aaaa-mm-jj hh:mm:ss dans
* un format souhaite
*
* @param String $date Date a convertir au format aaaa-mm-jj hh:mm:ss
* @param String $format Nouveau format de date voulu
* @see dateToTimestamp()
* @return String Renvoie la date dans le nouveau format
*/
static public function conversionFormat($date, $format="d/m/Y H:i:s")
{
return date($format, self::dateToTimestamp($date));
}
/**
* Converti une date au format aaaa-mm-jj hh:mm:ss en un timestamp
*
* @param String $date Date a convertir au format aaaa-mm-jj hh:mm:ss
* @return int Renvoie la date en timestamp
*/
static public function dateToTimestamp($date)
{
list($annee, $mois, $jour, $heure, $minute, $seconde) = sscanf($date, "%d-%d-%d %d:%d:%d");
return mktime($heure, $minute, $seconde, $mois, $jour, $annee);
}
/**
* @return String Renvoie la date du jour au format francais
*/
static public function fr()
{
$jour = 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");
return $jour[date(w)]." ".date(j)." ".$mois[date(n)-1]." ".date(Y);
}
/**
* Calcule le temps ecoule entre deux dates en jours/heures/minutes/secondes
*
* @param String $date1 Date au format aaaa-mm-jj hh:mm:ss
* @param String $date2 Date au format aaaa-mm-jj hh:mm:ss
* @return String Renvoie le temps ecoule entre les deux dates dans un tableau associatif
*/
static public function tempsEcoule($date1, $date2)
{
$timestamp1 = self::dateToTimestamp($date1);
$timestamp2 = self::dateToTimestamp($date2);
$difference = $timestamp1 - $timestamp2;
if($difference < 0)
$difference = $timestamp2 - $timestamp1;
// Calcul du nombre de jours
$reste = $difference % 86400;
$nb_jours = ($difference - $reste) / 86400;
// Calcul du nombre d'heures
$difference = $reste;
$reste = $difference % 3600;
$nb_heures = (int)(($difference - $reste) / 3600);
// Calcul du nombre de minutes
$difference = $reste;
$reste = $difference % 60;
$nb_minutes = ($difference - $reste) / 60;
$nb_secondes = $reste;
// Création du tableau associatif
$tab['jours'] = $nb_jours;
$tab['heures'] = $nb_heures;
$tab['minutes'] = $nb_minutes;
$tab['secondes'] = $nb_secondes;
return $tab;
}
}
?>
Version non-statique :<?php
/**
* Classe Date
* -----------
* Permet d'effectuer des p'tits calculs a partir d'une date
* --------------------------
* @author Ouaibou (Laurent.P)
* @version 2005.12.21
*/
class Date {
private $date;
/**
* Cre un nouvel objet date
*
*@param String $date Date de base au format aaaa-mm-jj hh:mm:ss
*/
public function __construct($date)
{
$this->date = $date;
}
/**
* Modifie la valeur de la date de base
*
* @param String $date Date de base au format aaaa-mm-jj hh:mm:ss
*/
public function setDate($date)
{
$this->date = $date;
}
/**
* Converti une date au format aaaa-mm-jj hh:mm:ss dans
* un format souhaite
*
* @param String $date Date a convertir au format aaaa-mm-jj hh:mm:ss
* @param String $format Nouveau format de date voulu
* @see dateToTimestamp()
* @return String Renvoie la date dans le nouveau format
*/
public function conversionFormat($format="d/m/Y H:i:s")
{
return date($format, $this->dateToTimestamp($this->$date));
}
/**
* Converti une date au format aaaa-mm-jj hh:mm:ss en un timestamp
*
* @param String $date Date a convertir au format aaaa-mm-jj hh:mm:ss
* @return int Renvoie la date en timestamp
*/
public function dateToTimestamp()
{
list($annee, $mois, $jour, $heure, $minute, $seconde) = sscanf($this->date, "%d-%d-%d %d:%d:%d");
return mktime($heure, $minute, $seconde, $mois, $jour, $annee);
}
/**
* @return String Renvoie la date du jour au format francais
*/
public function fr()
{
$jour = 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");
return $jour[date(w)]." ".date(j)." ".$mois[date(n)-1]." ".date(Y);
}
/**
* Calcule le temps ecoule entre deux dates en jours/heures/minutes/secondes
*
* @param String $date Date au format aaaa-mm-jj hh:mm:ss
* @return String Renvoie le temps ecoule entre la date de base et celle entree dans un tableau associatif
*/
public function tempsEcoule($date)
{
$timestamp1 = $this->dateToTimestamp($this->date);
$timestamp2 = $this->dateToTimestamp($date);
$difference = $timestamp1 - $timestamp2;
if($difference < 0)
$difference = $timestamp2 - $timestamp1;
// Calcul du nombre de jours
$reste = $difference % 86400;
$nb_jours = ($difference - $reste) / 86400;
// Calcul du nombre d'heures
$difference = $reste;
$reste = $difference % 3600;
$nb_heures = (int)(($difference - $reste) / 3600);
// Calcul du nombre de minutes
$difference = $reste;
$reste = $difference % 60;
$nb_minutes = ($difference - $reste) / 60;
$nb_secondes = $reste;
// Création du tableau associatif
$tab['jours'] = $nb_jours;
$tab['heures'] = $nb_heures;
$tab['minutes'] = $nb_minutes;
$tab['secondes'] = $nb_secondes;
return $tab;
}
}
?>
@+