<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dr. Danguer y Mr. Daniel &#187; Tiempo</title>
	<atom:link href="http://vida.danguer.com/tag/tiempo/feed/" rel="self" type="application/rss+xml" />
	<link>http://vida.danguer.com</link>
	<description>Un blog más de un freelancer</description>
	<lastBuildDate>Sun, 31 Jan 2010 00:14:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Una hora perdida</title>
		<link>http://vida.danguer.com/2009/11/25/una-hora-perdida/</link>
		<comments>http://vida.danguer.com/2009/11/25/una-hora-perdida/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 07:12:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Trabajo]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[strtotime]]></category>
		<category><![CDATA[Tiempo]]></category>
		<category><![CDATA[Zona Horaria]]></category>

		<guid isPermaLink="false">http://vida.danguer.com/?p=95</guid>
		<description><![CDATA[<p>Mientras estaba haciendo un pequeño calendario que mostrara fechas con ligas a otras parte del sitio, pensé que la manera más fácil era evitar llamar a <code><a href="http://www.php.net/strtotime">strototime</a></code>:</p>
<pre class="code">strtotime("+1 days", $time)</pre>
<p>y en su lugar utilizar directamente la suma de <code>86,400</code> segundos que es un día:</p>
<pre>60 * 60 segundos = 3600 segundos (1 hora) * 24 = 86400</pre>
<p>El calendario no tenía ningún problema hasta que noté que tenía repetido dos veces el día 1º de noviembre, los tiempos eran los siguientes (tiempo Unix):</p>
<pre>1257051600: 2009-11-01 00:00:00
1257138000: 2009-11-01 23:00:00</pre>
<p>Si hacen la suma, observarán que se sumó <code>86,400</code> segundos a una fecha y otra; pero el tiempo regresado por PHP (de hecho por el sistema Linux) es de 23 horas y no 24 horas.</p>
<p>Hice algunas pruebas en otros servidores y solo uno imprimió la fecha que esperaba (<code>2009-11-02 00:00:00</code>), la primera idea (por el cansancio) fue que era un error de PHP/Linux. Buscando un posible error, encontré algunas preguntas que como yo habían tenido un problema similar, pero mencionaban algo de la zona horaria, eso me recordó que el 1º de Noviembre en México atrasamos el reloj una hora por lo que en realidad el cálculo era correcto desde la perspectiva de Linux ya que estaba olvidando esa &#8220;hora perdida&#8221; en mis cálculos, el servidor que regresó bien la fecha estaba en otra zona horaria por lo que no compartían nuestro cambio de horario.</p>
<p>El tiempo Unix correcto es: <code>1257141600</code> no es otra cosa que es el día (<code>86400</code>) más la hora &#8220;perdida&#8221; (<code>3600</code>), este tiempo lo obtuve llamando a <code><a href="http://www.php.net/strtotime">strtotime</a></code> en PHP en lugar de calcularlo por mi cuenta.</p>
<p><strong>Moraleja</strong>: Manipular el tiempo Unix de forma directa agregando valores puede ser muy rápido y simplifica la implementación, pero si quieres hacer algo que no tenga errores utiliza siempre las funciones de tiempo de PHP/Linux.</p>
&#8230;]]></description>
			<content:encoded><![CDATA[<p>Mientras estaba haciendo un pequeño calendario que mostrara fechas con ligas a otras parte del sitio, pensé que la manera más fácil era evitar llamar a <code><a href="http://www.php.net/strtotime">strototime</a></code>:</p>
<pre class="code">strtotime("+1 days", $time)</pre>
<p>y en su lugar utilizar directamente la suma de <code>86,400</code> segundos que es un día:</p>
<pre>60 * 60 segundos = 3600 segundos (1 hora) * 24 = 86400</pre>
<p>El calendario no tenía ningún problema hasta que noté que tenía repetido dos veces el día 1º de noviembre, los tiempos eran los siguientes (tiempo Unix):</p>
<pre>1257051600: 2009-11-01 00:00:00
1257138000: 2009-11-01 23:00:00</pre>
<p>Si hacen la suma, observarán que se sumó <code>86,400</code> segundos a una fecha y otra; pero el tiempo regresado por PHP (de hecho por el sistema Linux) es de 23 horas y no 24 horas.</p>
<p>Hice algunas pruebas en otros servidores y solo uno imprimió la fecha que esperaba (<code>2009-11-02 00:00:00</code>), la primera idea (por el cansancio) fue que era un error de PHP/Linux. Buscando un posible error, encontré algunas preguntas que como yo habían tenido un problema similar, pero mencionaban algo de la zona horaria, eso me recordó que el 1º de Noviembre en México atrasamos el reloj una hora por lo que en realidad el cálculo era correcto desde la perspectiva de Linux ya que estaba olvidando esa &#8220;hora perdida&#8221; en mis cálculos, el servidor que regresó bien la fecha estaba en otra zona horaria por lo que no compartían nuestro cambio de horario.</p>
<p>El tiempo Unix correcto es: <code>1257141600</code> no es otra cosa que es el día (<code>86400</code>) más la hora &#8220;perdida&#8221; (<code>3600</code>), este tiempo lo obtuve llamando a <code><a href="http://www.php.net/strtotime">strtotime</a></code> en PHP en lugar de calcularlo por mi cuenta.</p>
<p><strong>Moraleja</strong>: Manipular el tiempo Unix de forma directa agregando valores puede ser muy rápido y simplifica la implementación, pero si quieres hacer algo que no tenga errores utiliza siempre las funciones de tiempo de PHP/Linux.</p>
]]></content:encoded>
			<wfw:commentRss>http://vida.danguer.com/2009/11/25/una-hora-perdida/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
