Skip to content

Instantly share code, notes, and snippets.

@alphp
Last active February 22, 2019 20:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alphp/8d59f29088c3af9a19a90e03d8912461 to your computer and use it in GitHub Desktop.
Save alphp/8d59f29088c3af9a19a90e03d8912461 to your computer and use it in GitHub Desktop.
<?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;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment