La différence entre deux date en plusieurs formats

Contenu du snippet

Cette fonction elle permet de retourner la différence entre deux dates en 3 formats

1)un mois (exemple) Mars 2010
2)une période de dd/mm/yyyy à dd/mm/yyyy
3)un jour exemple : Le dd/mm/yyyy

une autre fonction pour le nombre de jour de mois en vérifiant si l'année est bissextiles ou non .

Source / Exemple :


<?php
//Definir deux dates
$d1 = '01/03/2008';
$d2 = '01/03/2009';

//appel de fonction
distance_time($d1,$d2);
/**

  • Retourner une période, un mois ou bien un jour
  • /
function distance_time($from,$to){ $from_d=substr($from,0,2); $from_m=substr($from,3,2); $from_y=substr($from,6,4); $to_d=substr($to,0,2); $to_m=substr($to,3,2); $to_y=substr($to,6,4); $from_time = mktime(0,0,0,$from_m,$from_d,$from_y); $to_time = mktime(0,0,0,$to_m,$to_d,$to_y); //Mois de début $from_day = date('d',$from_time); $from_month = date('m',$from_time); $from_year = date('Y',$from_time); //Date de fin $to_day = date('d',$to_time); $to_month = date('m',$to_time); $to_year = date('Y',$to_time); //calculer le nombre de jours en miunte $dm = $distance_in_minutes = abs(($to_time - $from_time))/60 + 1440 ; //Nombre de jour en minute est > 0 if($dm > 0 ){ //période d'un mois if($dm >= 40320 && $dm <= 44580){ //Test si le même mois dans la même année if($from_month == $to_month && $from_year == $to_year){ //nombre de jours de mois $nb_jours = get_month($from_year,$from_month); if($nb_jours == $to_day){ echo date( "F" , mktime( 0 , 0 , 0 , $to_month ) ) .' '. $to_year; } }else{ echo 'De '.$from_day.'/'.$from_month.'/'.$from_year.' à '.$to_day.'/'.$to_month.'/'.$to_year; } } else if($dm >= 1440 && $dm < 2879){ echo 'Le '.$from_day.'/'.$from_month.'/'.$from_year; } else{ echo 'De '.$from_day.'/'.$from_month.'/'.$from_year.' à '.$to_day.'/'.$to_month.'/'.$to_year; } } } /** *
  • Récuperer le nombre de jours de mois en question
  • /
function get_month($year, $month){ $fev = '28'; //Vérifier si l'année est bissextiles if($month == '02'){ if($year%4 == 0){ $fev = '29'; }else{ $fev = '28'; } } //Enlever le 0 pour les mois < 10 if($month < 10 ){ if(strlen($month) == 2){ $month = substr($month,1,1); } } $mois = array(0,31,$fev,31,30,31,30,31,31,30,31,30,31); return $mois[$month]; } ?>

Conclusion :


la fonction n'est pas trop optimisé.
En cas de besoin merci de la faire.
Merci

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.