Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/07/2009, 09:23
Perrin_1
 
Fecha de Ingreso: marzo-2009
Mensajes: 163
Antigüedad: 15 años, 1 mes
Puntos: 0
funcion date_diff() modificar

que tal a todos muy buen dia, quisiera saber si alguien me puede ayudar a modificar esta funcion para que me acepte otro tipo de formato de fecha, porque el que este acepta es '1 July 2003' y quiero que acepte '2003-05-01' o de que manera puedo convertir ese formato que acepta al que quiero, saludos



Código PHP:
<?php
     
    
function datediff($interval$datefrom$dateto$using_timestamps false) {
    
/*
    $interval can be:
    yyyy - Number of full years
    q - Number of full quarters
    m - Number of full months
    y - Difference between day numbers
   (eg 1st Jan 2004 is "1", the first day. 2nd Feb 2003 is "33". The datediff is "-32".)
   d - Number of full days
   w - Number of full weekdays
   ww - Number of full weeks
   h - Number of full hours
   n - Number of full minutes
   s - Number of full seconds (default)
   */
  
   
if (!$using_timestamps) {
   
$datefrom strtotime($datefrom0);
   
$dateto strtotime($dateto0);
   }
   
$difference $dateto $datefrom// Difference in seconds
  
   
switch($interval) {
  
   case 
'yyyy'// Number of full years
    
   
$years_difference floor($difference 31536000);
   if (
mktime(date("H"$datefrom), date("i"$datefrom), date("s"$datefrom), date("n"$datefrom), date("j"$datefrom), date("Y"$datefrom)+$years_difference) > $dateto) {
   
$years_difference--;
   }
   if (
mktime(date("H"$dateto), date("i"$dateto), date("s"$dateto), date("n"$dateto), date("j"$dateto), date("Y"$dateto)-($years_difference+1)) > $datefrom) {
   
$years_difference++;
   }
   
$datediff $years_difference;
   break;
    
   case 
"q"// Number of full quarters
    
   
$quarters_difference floor($difference 8035200);
   while (
mktime(date("H"$datefrom), date("i"$datefrom), date("s"$datefrom), date("n"$datefrom)+($quarters_difference*3), date("j"$dateto), date("Y"$datefrom)) < $dateto) {
   
$months_difference++;
   }
   
$quarters_difference--;
   
$datediff $quarters_difference;
   break;
    
   case 
"m"// Number of full months
    
   
$months_difference floor($difference 2678400);
   while (
mktime(date("H"$datefrom), date("i"$datefrom), date("s"$datefrom), date("n"$datefrom)+($months_difference), date("j"$dateto), date("Y"$datefrom)) < $dateto) {
   
$months_difference++;
   }
   
$months_difference--;
   
$datediff $months_difference;
   break;
    
   case 
'y'// Difference between day numbers
    
   
$datediff date("z"$dateto) - date("z"$datefrom);
   break;
    
   case 
"d"// Number of full days
    
  
$datediff floor($difference 86400);
   break;
    
   case 
"w"// Number of full weekdays
    
   
$days_difference floor($difference 86400);
   
$weeks_difference floor($days_difference 7); // Complete weeks
   
$first_day date("w"$datefrom);
   
$days_remainder floor($days_difference 7);
   
$odd_days $first_day $days_remainder// Do we have a Saturday or Sunday in the remainder?
   
if ($odd_days 7) { // Sunday
   
$days_remainder--;
   }
   if (
$odd_days 6) { // Saturday
   
$days_remainder--;
   }
   
$datediff = ($weeks_difference 5) + $days_remainder;
   break;
    
   case 
"ww"// Number of full weeks
    
   
$datediff floor($difference 604800);
   break;
    
   case 
"h"// Number of full hours
    
   
$datediff floor($difference 3600);
   break;
    
   case 
"n"// Number of full minutes
    
   
$datediff floor($difference 60);
   break;
    
  default: 
// Number of full seconds (default)
   
  
$datediff $difference;
  break;
  }
 
  return 
$datediff;
   
  }
   
  
?>