elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  mktime y la edicion del tiempo directamente
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: mktime y la edicion del tiempo directamente  (Leído 2,739 veces)
patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
mktime y la edicion del tiempo directamente
« en: 27 Marzo 2014, 12:20 pm »

Hola comprobé que al utilizar el tiempo devuelvo por mktime(); y luego editar lo en plan de restarle un día(3600*60*12) no es exacto ya que si hago un bucle al final se repiten los días. Por que ?

Saludos


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: mktime y la edicion del tiempo directamente
« Respuesta #1 en: 27 Marzo 2014, 13:36 pm »

No entendi NADA!  :huh:


En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: mktime y la edicion del tiempo directamente
« Respuesta #2 en: 27 Marzo 2014, 13:56 pm »

Pues.. diferencia entre:

mktime()-3600*60*24
strtotime('-1 day');
En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: mktime y la edicion del tiempo directamente
« Respuesta #3 en: 27 Marzo 2014, 14:23 pm »

Tienes un error en la implementación.

En estos casos, lo mas fácil es convertirlo a fecha normal para ver cual es exactamente la fecha que muestran.

Código
  1. <?php
  2.  
  3. $mktime = mktime()-3600*60*24;
  4. echo $mktime,' - ',date('d/m/Y H:i:s',$mktime), '<br />';
  5.  
  6. $strtime = strtotime('-1 day');
  7. echo $strtime,' - ',date('d/m/Y H:i:s',$strtime), '<br />';
  8.  
  9. ?>

En este caso me devuelve
Código:
1390742193 - 26/01/2014 14:16:33
1395839793 - 26/03/2014 14:16:33

Si te fijas, el mes cambia del 3 al 1. Eso es porque:
3600 * 60 = 216000
216000 * 24 = 5184000
Es decir, le restas 5184000 segundos que son 60 días.

Tienes que tener en cuenta que YA estas tratando con segundos y que no te hace falta convertirlo a horas. Es decir, si 3600 segundos son 1 hora.. tan simple como:
Código
  1. $mktime = mktime()-(3600*24);

Saludos
« Última modificación: 27 Marzo 2014, 14:26 pm por #!drvy » En línea

patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: mktime y la edicion del tiempo directamente
« Respuesta #4 en: 27 Marzo 2014, 18:56 pm »

A bueno esto fue un despiste pero si le resto 3600*60 es lo mismo que usar strtotime() ?
En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: mktime y la edicion del tiempo directamente
« Respuesta #5 en: 27 Marzo 2014, 21:50 pm »

Si. Pero si solo lo vas a utilizar para obtener el unix timestamp, utiliza time()

Saludos
En línea

patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: mktime y la edicion del tiempo directamente
« Respuesta #6 en: 27 Marzo 2014, 22:38 pm »

Vale pero igual queda la duda si existe diferencia en este caso entre

Código
  1. time()-3600*24;
  2.  
  3. strtotime('-1 day');
  4.  
  5. mktime()-3600*24;
  6.  

Entre estos 3 hay alguna diferencia y si no cual seria mas rápido?

Saludos
En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: mktime y la edicion del tiempo directamente
« Respuesta #7 en: 27 Marzo 2014, 22:54 pm »

Las diferencias las ves en php.net

http://us3.php.net/manual/es/function.mktime.php
Citar
.Devuelve la marca de tiempo Unix correspondiente a los argumentos dados. Esta marca de tiempo es un entero que contiene el número de segundos entre la Época Unix (1 de Enero del 1970 00:00:00 GMT) y el instante especificado.

http://es1.php.net/strtotime
Citar
Esta función espera que se proporcione una cadena que contenga un formato de fecha en Inglés US e intentará convertir ese formato a una fecha Unix (el número de segundos desde el 1 de Enero del 1970 00:00:00 UTC), relativa a la marca de tiempo dada en now, o la marca de tiempo actual si now no se proporciona.

http://es1.php.net/time
Citar
Devuelve el momento actual medido como el número de segundos desde la Época Unix (1 de Enero de 1970 00:00:00 GMT).


En fin, no tiene ningún sentido utilizar mktime() si no le vas a proporcionar parámetros. No tiene ningún sentido utilizar strtotime('-1 day') si puedes hacer -3600*24. strtotime() es por ejemplo para cuando quieres calcular en que fecha cae el lunes de la tercera semana de XXXX año.

El mas rápido de todos es obviamente time() ya que no procesa ningún argumento ni nada.

Saludos
En línea

patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: mktime y la edicion del tiempo directamente
« Respuesta #8 en: 28 Marzo 2014, 07:46 am »

Gracias ahora me quedo mas claro pero existe alguna forma de ver estas funciones por dentro ? Hay alguna pagina que ha publicado su código fuente?
En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: mktime y la edicion del tiempo directamente
« Respuesta #9 en: 28 Marzo 2014, 13:27 pm »

Te puedes descargar el código fuente de PHP y buscar a ver como se implementan.
http://www.php.net/downloads.php#v5.4.26

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
instalar o copiar directamente
Juegos y Consolas
neuronacero 1 1,526 Último mensaje 27 Abril 2005, 17:13 pm
por Mance
MKTime() & <1970 ¬¬
PHP
Azielito 4 2,189 Último mensaje 29 Junio 2007, 15:47 pm
por [ Alberto]
edición de video y edición de sonido
Multimedia
ajedrez 2 4,253 Último mensaje 17 Marzo 2013, 21:40 pm
por ajedrez
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines