<?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>nachopro &#187; PHP</title>
	<atom:link href="http://blog.nachopro.com.ar/category/informatica/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.nachopro.com.ar</link>
	<description>yendo de la cama a la compu...</description>
	<lastBuildDate>Sat, 19 Nov 2011 01:34:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Ajustando la hora según zona horaria en PHP</title>
		<link>http://blog.nachopro.com.ar/ajustando-la-hora-segun-zona-horaria-en-php/</link>
		<comments>http://blog.nachopro.com.ar/ajustando-la-hora-segun-zona-horaria-en-php/#comments</comments>
		<pubDate>Wed, 31 Oct 2007 12:25:33 +0000</pubDate>
		<dc:creator>nachopro</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Muchas veces, los programadores, tenemos que resolver problemas y cálculos en donde alguna de sus variables es el tiempo. Un ejemplo clásico es guardar la hora en la que se realizó un ingreso al sistema o la registración de un cliente. Generalmente, y más que nada en PHP, uno utiliza tanto servidores locales (ubicados en [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces, los programadores, tenemos que resolver problemas y cálculos en donde alguna de sus variables es el tiempo. Un ejemplo clásico es guardar la hora en la que se realizó un ingreso al sistema o la registración de un cliente.</p>
<p><span id="more-147"></span></p>
<p>Generalmente, y más que nada en PHP, uno utiliza tanto servidores locales (ubicados en país de uno, con la hora en dicha zona horaria) como servidores de Estados Unidos, Alemania o cualquier otra zona del mundo. En este segundo caso surgen los problemas porque cada servidor va a tener la hora que corresponde a su ubicación geográfica, sigamos el siguiente ejemplo:</p>
<p>Yo, nachopro, hago un trabajo para un cliente que tiene su sistema acá, en Argentina. Este cliente contrató un servidor de última generación que se ubica en Texas (Estados unidos). Resultando que la hora que mi cliente necesita es la GMT-3 mientras que la hora que tiene el servidor es GMT-8.</p>
<p>El problema es que al usar la función date() de PHP, siendo las 9:42 AM acá en Argentina, me va a devolver 4:42 AM. Una notable diferencia de 5 horas, nada menos <img src='http://blog.nachopro.com.ar/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>La solución consiste en generar la hora en base a la hora GMT-0 y sumarle nuestra diferencia respecto a ella. Es decir, nosotros estamos en GMT-3. Quiere decir que si la hora GMT es 12:46 y le sumamos nuestra zona horaria (-3) obtenemos 12:46 + (-3:00) = 9:46! En el caso de Texas realizamos 12:46 + (-8:00) = 4:46!</p>
<p>Esto es amazing y se resuelve con el siguiente código de PHP:</p>
<pre class="codigofuente">
?php

function hora_local($zona_horaria = 0)
{
	if ($zona_horaria > -12.1 and $zona_horaria < 12.1)
	{
		$hora_local = time() + ($zona_horaria * 3600);
		return $hora_local;
	}
	return 'error';
}

echo gmdate('d-m-Y H:i:s', hora_local(-8));

?
</pre>
<p>Esta función recibe una zona horaria y nos devuelve los segundos de la hora actual más los segundos de dicha zona horaria. Se debe emplear como segundo parámetro de la función gmdate() para que genere correctamente la hora <img src='http://blog.nachopro.com.ar/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>En caso de que se ingrese una zona horaria mayor a 12 o menor a -12 la función retorna un string para generar un error en la función gmdate(), la cual acepta sólo enteros como segundo parámetro, y así reconocer fácilmente un error de zona horaria.</p>
<p>Espero que les sirva. Hasta la próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nachopro.com.ar/ajustando-la-hora-segun-zona-horaria-en-php/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

