Foros del Web » Programando para Internet » PHP »

Diferencia de horas

Estas en el tema de Diferencia de horas en el foro de PHP en Foros del Web. Hola. Estoy parametrizando una aplicación tipo "Coupon" y tengo un problema con las horas del contador hacia atras que tiene la aplicación. Cuando el contador ...
  #1 (permalink)  
Antiguo 02/01/2012, 20:07
 
Fecha de Ingreso: julio-2010
Mensajes: 14
Antigüedad: 13 años, 9 meses
Puntos: 0
Pregunta Diferencia de horas

Hola. Estoy parametrizando una aplicación tipo "Coupon" y tengo un problema con las horas del contador hacia atras que tiene la aplicación.
Cuando el contador llega a 00.00, resulta que aún quedan 5.30 horas.

Viendo el código, me fijo que el problema puede ser que la aplicación está aplicando una configuración horaria que no es la nuestra (España), y ahí puede estar la diferencia de las horas.

En el código trae estas dos líneas que pienso que las podría usar para ajustar esa diferencia... pero por mucho que he probado, no lo consigo. Supongo que el problema está en que no sé hacerlo bien y por eso no cambia nada.

¿Alguien sabe como editar estas líneas para conseguir ajustar esa diferencia de 5.30 h. ?

Gracias por intentarlo.

Código:
Código PHP:
// get timezone

$timezoneOffset date('P'); 
$timezoneOffset str_replace(':','.',$timezoneOffset);

//exit; // for timer Ends here 
  #2 (permalink)  
Antiguo 02/01/2012, 20:31
 
Fecha de Ingreso: enero-2011
Ubicación: Argentina
Mensajes: 80
Antigüedad: 13 años, 2 meses
Puntos: 12
Respuesta: Diferencia de horas

Bueno entonces prueba así para ver que sucede.

Código PHP:
Ver original
  1. <?php
  2.  
  3. //Establece la zona horaria predeterminada usada por todas las funciones de fecha/hora en un script
  4. date_default_timezone_set('Europe/Madrid');
  5.  
  6. // get timezone
  7.  
  8. $timezoneOffset = date('P');
  9. $timezoneOffset = str_replace(':','.',$timezoneOffset);
  10.  
  11. //exit; // for timer Ends here
  12.  
  13. ?>

date_default_timezone_set

timezones.europe


Saludos
  #3 (permalink)  
Antiguo 03/01/2012, 11:11
 
Fecha de Ingreso: julio-2010
Mensajes: 14
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Diferencia de horas

Gracias Max pero nada, no me funciona. Pero no me extraña porque esta llamada trae los datos de una base de datos que a su vez se insertan de un formulario y me parece que por el medio hay un monton de funciones por el contador.

Se me ocurre otra idea:
Puedo eliminar esos datos, porque además por otros motivos pueden ser engañosos y puedo poner directamente la fecha de finalización de la "oferta".

El código de llamada a ese dato que utilizo es el siguiente (una copia exacta del código de llamada del nombre de la oferta, solo que cambio el dato de la llamada):
Código PHP:
    <?php 
    
    
if(strlen($row["coupon_expirydate"])>80)
    {
        echo 
html_entity_decode(substr($row["coupon_expirydate"],0,80), ENT_QUOTES)."...";
    }else
    {
        echo 
html_entity_decode($row["coupon_expirydate"], ENT_QUOTES);
    }
    
?>
El caso es que me funciona perfectamente....pero me muestra los datos en formato ingles:
2012-02-29 21:00:16

Mi pregunta ahora es:
¿Alguna fórmula para transformar el formato de esa fecha al nuestro?
Tendría que quedar 29-02-2012 21:00:16, aunque si desapareciera la hora, minutos y segundos, también valdría.

Muchas gracias de nuevo por la atención.
  #4 (permalink)  
Antiguo 03/01/2012, 12:29
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Diferencia de horas

para conseguir la estructura de la fecha es tan simple como http://es.php.net/manual/es/function.date.php y lo configuras a tu gusto
  #5 (permalink)  
Antiguo 03/01/2012, 16:46
 
Fecha de Ingreso: julio-2010
Mensajes: 14
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Diferencia de horas

Gracias webankenovi.
Pues no lo hago bien seguro, porque me da error:

La función que me da los datos de la fecha es la siguiente:
Código PHP:
<?php 
    
echo html_entity_decode($row["coupon_enddate"], ENT_QUOTES);
?>
que me lo da con el formato ingles: 2012-02-29 21:00:16

Se supone que la función que tengo que usar para obtener el formato nuestro es
Código PHP:
<?php 
    
echo date('d-m-Y - g-i-s ');
?>
Y al ponerla tal cual en el archivo, funciona perfectamente, dandome la fecha actual en formato nuestro.

Se supone que remplazando "date" por la función superior ya me funcionaría... pues no, lo haga como lo haga siempre me sale errores de diferentes tipo.
Seguro que no se hacer bien ese remplazo, soy un gamba, pero no lo hago bien.
¿Alguien con mas conociemientos que yo, porfa?
Gracias por la atención.
  #6 (permalink)  
Antiguo 03/01/2012, 16:52
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Diferencia de horas

Bueno le tienes que pasar la fecha a la función date o sino como va a saber que convertir, no basta con el formato:

Código PHP:
Ver original
  1. <?php
  2. $aquilafecha = '2012-02-29 21:00:16';
  3. echo date('d-m-Y H:i:s', strtotime($aquilafecha)); //29-02-2012 21:00:16

o algo así:

Código PHP:
Ver original
  1. <?php
  2. $aquilafecha = '2012-02-29 21:00:16';
  3. $fecha = DateTime::createFromFormat('Y-m-d H:i:s', $aquilafecha);
  4. echo $fecha->format('d-m-Y H:i:s'); //29-02-2012 21:00:16

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 03/01/2012, 17:30
 
Fecha de Ingreso: julio-2010
Mensajes: 14
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Diferencia de horas

Gracias andresdzphp.
Me río porque he leído tu firma y eso es exactamente lo que estoy haciendo; aparte de postear aquí, tengo abiertas tres pestañas con manuales de Php para conseguirlo, jajajaja.
Y mira por donde, no voy mal encaminado según tu respuesta.

Pero te explico.
La fecha que manejamos(2012-02-29 21:00:16) es un ejemplo. La fecha a la que hay que aplicarle el formato es al resultado de la llamada
Código PHP:
<?php 
    
echo html_entity_decode($row["coupon_enddate"], ENT_QUOTES);
?>
que coje la fecha de la ficha de la oferta. Y cada ficha tiene una fecha diferente.
Realmente el dato es "coupon_enddate" que significa "Fecha final del cupón"

Voy a intentar aplicar esta llamada a tu ejemplo, a ver si me sale. Gracias.
  #8 (permalink)  
Antiguo 03/01/2012, 17:38
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Diferencia de horas

donde dice $aquilafecha reemplazas por tu código, a ver así:

Código PHP:
Ver original
  1. echo date('d-m-Y H:i:s', strtotime(html_entity_decode($row["coupon_enddate"], ENT_QUOTES)));
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #9 (permalink)  
Antiguo 03/01/2012, 17:50
 
Fecha de Ingreso: julio-2010
Mensajes: 14
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Diferencia de horas

andresdzphp, todo perfecto. Muchisimas gracias.

Dejo aquí el resultado por si vale a otros como ejemplo.
Al final ha quedado así
Código PHP:
    <?php 
$fechafinal 
= ($row["coupon_enddate"]);
$fecha DateTime::createFromFormat('Y-m-d H:i:s'$fechafinal);
echo 
$fecha->format('d-m-Y H:i:s');    
?>
Llevo más de 7 horas para conseguirlo pero, aparte de dejar los ojos en la pantalla, me ha servido para aprender un poco de Php.
Lo dicho, muchas gracias a todos
  #10 (permalink)  
Antiguo 03/01/2012, 18:24
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Diferencia de horas

Se supone que DateTime::createFromFormat es válido para
(PHP 5 >= 5.3.0)
asi que no siempre va a estar disponible, y lo que no me queda claro es si la fecha la almacenaste desde php o es una fecha de MySQL

por las dudas, algo simple para pasar sel formato us al europeo
Código PHP:
Ver original
  1. <?php
  2. function fus_feu($strFecha,$s) {
  3. $fecha = explode ($s,$strFecha);
  4. $formatoEuropeo = $fecha[1]."$s".$fecha[0]."$s".$fecha[2];
  5. return $formatoEuropeo;
  6.  }
  7. // Argumentos, la fecha y el valor que actua como separador
  8. echo fus_feu('12-31-2006','-');
  9. ?>
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 03/01/2012, 18:46
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Diferencia de horas

Cita:
Iniciado por emprear Ver Mensaje
Se supone que DateTime::createFromFormat es válido para
(PHP 5 >= 5.3.0)
asi que no siempre va a estar disponible
Si pero de disponer con la versión es mucho más exacto.

Código PHP:
Ver original
  1. function fus_feu($strFecha,$s) {
  2.     $fecha = explode ($s,$strFecha);
  3.     $formatoEuropeo = $fecha[1]."$s".$fecha[0]."$s".$fecha[2];
  4.     return $formatoEuropeo;
  5. }
  6. // Argumentos, la fecha y el valor que actua como separador
  7. echo fus_feu('2012-02-29 21:00:16','-'); //02-2012-29 21:00:16

También se puede hacer así pero tienes que tener en cuenta la hora...

Código PHP:
Ver original
  1. echo date('d-m-Y H:i:s', strtotime('2012-02-29 21:00:16'));

Yo lo veo más sencillo así, pero prefiero usar la clase DateTime.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: diferencia, horas
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 00:41.