Foros del Web » Programando para Internet » PHP »

Convertir fechas y restarlas

Estas en el tema de Convertir fechas y restarlas en el foro de PHP en Foros del Web. Buenos dias, trabajo con un sistema drupal el cual me formatea las fechas de la siguiente forma: 2010-10-07T00:00:00, con lo cual lo que me gustaria ...
  #1 (permalink)  
Antiguo 20/10/2010, 03:35
 
Fecha de Ingreso: octubre-2010
Ubicación: Sevilla
Mensajes: 11
Antigüedad: 10 años, 7 meses
Puntos: 0
Pregunta Convertir fechas y restarlas

Buenos dias, trabajo con un sistema drupal el cual me formatea las fechas de la siguiente forma: 2010-10-07T00:00:00, con lo cual lo que me gustaria es tratar la cadena para poder eliminar la parte de T00:00:00. Mi codigo es el siguiente:

$conexion = mysql_connect('localhost', 'root', '');
mysql_select_db('drupal', $conexion);
$tabla = mysql_query("SELECT field_obra_ejecucion_value,field_obra_fecha_ini_va lue,field_obra_replanteo_value FROM drupal.content_type_obra");
while ($valor16= mysql_fetch_array($tabla)) {...


A partir de aqui lo que quiero es tratar las fechas que serian field_obra_fecha_ini_value y field_obra_replanteo_value y poder restarlas para obtener la diferencia de dias entre las 2.

Alguna idea? Muchas gracias
  #2 (permalink)  
Antiguo 20/10/2010, 04:35
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 10 años, 8 meses
Puntos: 331
Respuesta: Convertir fechas y restarlas

Te paso una solución en dos pasos:

1. obtener la cadena que quieres
2. restar las fechas (con 2 funciones)

Código PHP:
<?php
$temp 
explode("T""2010-10-07T00:00:00");
$fecha $temp[0];
$fecha2 "2010-10-03";

function 
minus($fecha1$fecha0) {
        return 
date2days($fecha1) - date2days($fecha0);
    }
    
function 
date2days($fecha) {
// yyyy-mm-dd
list($anyo$mes$dia) = explode("-"$fecha);

// Días acumulados por meses.
// Basta hasta novimbre.
$ar_dias = array(
31
31 28
31 28 31
31 28 31 30
31 28 31 30 31
31 28 31 30 31 30
31 28 31 30 31 30 31
31 28 31 30 31 30 31 31
31 28 31 30 31 30 31 31 30
31 28 31 30 31 30 31 31 30 31
31 28 31 30 31 30 31 31 30 31 30); 

$xTotal floor(($anyo 1901) * 365.25);
$xTotal += (($mes != 1) ? $ar_dias[$mes 2] : 0);        // El array empieza en 0.
$xTotal += $dia;
$xTotal += (($mes 2) && checkdate(0229$anyo) ? 0);

return 
$xTotal;
}
    
    echo 
minus($fecha$fecha2);
    
?>
De todas maneras te recomiendo que si puedes busques la manera de hacerlo con base de datos.
Saludos
  #3 (permalink)  
Antiguo 20/10/2010, 06:06
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 11 años, 7 meses
Puntos: 334
Respuesta: Convertir fechas y restarlas

es facil en realidad...
solo usas explode para eliminar lo q no te sirve de la fecha
Código PHP:
Ver original
  1. list($fecha) = explode('T', $fecha);

y luego las restas

Código PHP:
Ver original
  1. echo (strtotime($fecha1) - strtotime($fecha2)) / 60 / 60 / 24;

saludos
__________________
More about me...
~ @rhyudek1
~ Github
  #4 (permalink)  
Antiguo 21/10/2010, 04:19
 
Fecha de Ingreso: octubre-2010
Ubicación: Sevilla
Mensajes: 11
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Convertir fechas y restarlas

muchas gracias a los 2 me ha servido de gran ayuda

Etiquetas: drupal, mysql, php-mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:39.