Código de PHP - Cálculos correctos con fechas

Imágen de perfil
Val: 55
Ha disminuido su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Cálculos correctos con fechasgráfica de visualizaciones


PHP

Publicado el 3 de Noviembre del 2015 por Fernando (4 códigos)
4.623 visualizaciones desde el 3 de Noviembre del 2015
Ejemplos de cálculos con fechas en PHP y el efecto de los cambios de hora (DST) que en ellos tienen.
La salida se puede comprobar aquí: http://lab.fawno.com/code/dates.php
Para las preguntas y respuestas el hilo del foro

El artículo de mi blog: http://lab.fawno.com/2015/11/03/calculos-con-fechas-en-php/

3.0
estrellaestrellaestrellaestrellaestrella(2)

Publicado el 3 de Noviembre del 2015gráfica de visualizaciones de la versión: 3.0
4.624 visualizaciones desde el 3 de Noviembre del 2015
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Añado etiquetas pre para la correcta visualización de los resultados. Con la etiqueta pre los saltos de línea (\n) y los tabuladores (\t) se visualizan correctamente, además el navegador utilizará una tipografía monoespacio, lo que facilita la visualización de los resultados al respetar la alineación que he querido mantener.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<pre>
<?php
ini_set('date.timezone', 'Europe/Madrid');
 
define('HT',	"\x09");	// \x09	\t	Horizontal Tab
define('LF',	"\x0A");	// \x0A	\n	Line feed
 
// Calculamos el inicio del DST: último domingo de marzo (2015-03-29 00:00:00 para 2015).
$date10 = strtotime('last sunday of march');
echo strftime('$date10 = strtotime("last sunday of march");   => %Y-%m-%d %H:%M:%S', $date10), LF;
// Añadimos un día a $date10 de la manera correcta       (2015-03-30 00:00:00 para 2015).
$date11 = strtotime('+1day', $date10);
echo strftime('$date11 = strtotime("+1day", $date10);         => %Y-%m-%d %H:%M:%S', $date11), LF;
// Añadimos un día a $date10 de la manera incorrecta     (2015-03-30 01:00:00 para 2015).
$date12 = $date10 + 86400;
echo strftime('$date12 = $date10 + 86400;                     => %Y-%m-%d %H:%M:%S', $date12), LF;
 
echo LF;
 
// Calculamos el final del DST: último domingo de octubre (2015-10-25 00:00:00 para 2015).
$date20 = strtotime('last sunday of october');
echo strftime('$date20 = strtotime("last sunday of october"); => %Y-%m-%d %H:%M:%S', $date20), LF;
// Añadimos un día a $date20 de la manera correcta        (2015-10-26 00:00:00 para 2015).
$date21 = strtotime('+1day', $date20);
echo strftime('$date21 = strtotime("+1day", $date20);         => %Y-%m-%d %H:%M:%S', $date21), LF;
// Añadimos un día a $date20 de la manera incorrecta      (2015-10-25 23:00:00 para 2015).
$date22 = $date20 + 86400;
echo strftime('$date22 = $date20 + 86400;                     => %Y-%m-%d %H:%M:%S', $date22), LF;
 
echo LF;
 
// Calculamos la diferencia entre fechas de manera incorrecta, nos dará 82800 segundos (23 horas) para el inicio del DST.
$date_diff12 = $date11 - $date10;
echo '$date_diff12 = $date11 - $date10;                                                                                 => ', $date_diff12, ' segundos = ' , $date_diff12 / 3600, ' horas', LF;
// Calculamos la diferencia entre fechas de manera correcta, nos dará un día exacto.
$date_diff11 = date_diff(new DateTime(date('Y-m-d H:i:s', $date10)), new DateTime(date('Y-m-d H:i:s', $date11)))->format('%R %y años, %m meses, %d días, %h horas, %i minutos, %s segundos');
echo '$date_diff11 = date_diff(new DateTime(date("Y-m-d H:i:s", $date10)), new DateTime(date("Y-m-d H:i:s", $date11))); => ', $date_diff11, LF;
 
echo LF;
 
// Calculamos la diferencia entre fechas de manera incorrecta, nos dará 90000 segundos (25 horas) para el final del DST.
$date_diff22 = $date21 - $date20;
echo '$date_diff22 = $date21 - $date20;                                                                                 => ', $date_diff22, ' segundos = ' , $date_diff22 / 3600, ' horas', LF;
// Calculamos la diferencia entre fechas de manera correcta, nos dará un día exacto.
$date_diff21 = date_diff(new DateTime(date('Y-m-d H:i:s', $date20)), new DateTime(date('Y-m-d H:i:s', $date21)))->format('%R %y años, %m meses, %d días, %h horas, %i minutos, %s segundos');
echo '$date_diff21 = date_diff(new DateTime(date("Y-m-d H:i:s", $date20)), new DateTime(date("Y-m-d H:i:s", $date21))); => ', $date_diff21, LF;
?>
</pre>



Comentarios sobre la versión: 3.0 (2)

Imágen de perfil
4 de Noviembre del 2015
estrellaestrellaestrellaestrellaestrella
Muy bueno Fernando!!!

Este código es mejor que el que yo publique!!!

Nota: El que lo quiera visualizar en un navegador, cambiar esta linea:
define('LF', "\x0A");
por esta:
define('LF', "<br>");
Responder
5 de Noviembre del 2015
estrellaestrellaestrellaestrellaestrella
Excelente


Yo estoy relizando un proyecto y en una parte tengo que hacer que el sistema pueda reservar horarios para ser usado por cierto tiempo el control de una planta

esta parte tiene:
- fecha inicial
-fecha final
-hora inicial
-hora final

lo que pasa es que no he podido hacer que cuando me añada estos datos me diga que ya estan ocupadas esas horas o ese tiempo
Responder

Comentar la versión: 3.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s3329