<?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>James Padolsey&#187; Uncategorized category &#8211; James Padolsey</title>
	<atom:link href="http://james.padolsey.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://james.padolsey.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sat, 21 Aug 2010 04:38:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Getting the real time in JavaScript</title>
		<link>http://james.padolsey.com/uncategorized/getting-the-real-time-in-javascript/</link>
		<comments>http://james.padolsey.com/uncategorized/getting-the-real-time-in-javascript/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 00:03:51 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Time]]></category>

		<guid isPermaLink="false">http://james.padolsey.com/?p=477</guid>
		<description><![CDATA[Getting the time in JavaScript is pretty simple. Using the <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date">Date</a> constructor will give us the time as set on the user's computer, but what if we want the accurate time, or the time in a different timezone?]]></description>
			<content:encoded><![CDATA[<p>Getting the time in JavaScript is pretty simple. Using the <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date">Date</a> constructor will give us the time as set on the user&#8217;s computer, but what if we want the accurate time, or the time in a different timezone?</p>

<p>Even with <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date/getTimezoneOffset"><code>getTimezoneOffset()</code></a> you&#8217;re still relying on the client!</p>

<p>It turns out that the only way of getting a complete and accurate time from any timezone requires a little bit of server interaction. Luckily there are a few APIs out there that offer this service (actually, there&#8217;s only one; well I couldn&#8217;t find any others)! </p>

<p>Here we&#8217;re using the <a href="http://simonwillison.net/2008/Jun/21/jsontime/">&#8216;json-time&#8217; API developed by Simon Willson</a>:</p>


<h2>JSON-time</h2>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span class="kw2">function</span> getTime<span class="br0">&#40;</span>zone<span class="sy0">,</span> success<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw2">var</span> url <span class="sy0">=</span> <span class="st0">'http://json-time.appspot.com/time.json?tz='</span> <span class="sy0">+</span> zone<span class="sy0">,</span>
        ud <span class="sy0">=</span> <span class="st0">'json'</span> <span class="sy0">+</span> <span class="br0">&#40;</span><span class="sy0">+</span><span class="kw2">new</span> Date<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    window<span class="br0">&#91;</span>ud<span class="br0">&#93;</span><span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span>o<span class="br0">&#41;</span><span class="br0">&#123;</span>
        success <span class="sy0">&amp;&amp;</span> success<span class="br0">&#40;</span><span class="kw2">new</span> Date<span class="br0">&#40;</span>o.<span class="me1">datetime</span><span class="br0">&#41;</span><span class="sy0">,</span> o<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">;</span>
    document.<span class="me1">getElementsByTagName</span><span class="br0">&#40;</span><span class="st0">'head'</span><span class="br0">&#41;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">appendChild</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        <span class="kw2">var</span> s <span class="sy0">=</span> document.<span class="me1">createElement</span><span class="br0">&#40;</span><span class="st0">'script'</span><span class="br0">&#41;</span><span class="sy0">;</span>
        s.<span class="me1">type</span> <span class="sy0">=</span> <span class="st0">'text/javascript'</span><span class="sy0">;</span>
        s.<span class="me1">src</span> <span class="sy0">=</span> url <span class="sy0">+</span> <span class="st0">'&amp;callback='</span> <span class="sy0">+</span> ud<span class="sy0">;</span>
        <span class="kw1">return</span> s<span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>




<h2>Usage</h2>

<p>The first parameter of the callback function is the time (having been passed through the Date constructor), so you can use <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date#Methods_2">Date methods</a> such as <code>getSeconds()</code> etc. The second parameter is the entire object returned from the JSON request.</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span class="co1">// Alert GMT:</span>
getTime<span class="br0">&#40;</span><span class="st0">'GMT'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>time<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw3">alert</span><span class="br0">&#40;</span>time<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="co1">// Get London time, and format it:</span>
getTime<span class="br0">&#40;</span><span class="st0">'Europe/London'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>time<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw2">var</span> formatted <span class="sy0">=</span> time.<span class="me1">getHours</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="st0">':'</span> 
                  <span class="sy0">+</span> time.<span class="me1">getMinutes</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="st0">':'</span>
                  <span class="sy0">+</span> time.<span class="me1">getSeconds</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw3">alert</span><span class="br0">&#40;</span> <span class="st0">'The time in London is '</span> <span class="sy0">+</span> formatted <span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>




<p>For reference, here&#8217;s <a href="http://json-time.appspot.com/timezones.json">a list of all the available timezones</a> (to use one, remove the backslash).</p>

<h2>jQuery version</h2>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$.<span class="me1">getTime</span> <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span>zone<span class="sy0">,</span> success<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw2">var</span> url <span class="sy0">=</span> <span class="st0">'http://json-time.appspot.com/time.json?tz='</span>
            <span class="sy0">+</span> zone <span class="sy0">+</span> <span class="st0">'&amp;callback=?'</span><span class="sy0">;</span>
    $.<span class="me1">getJSON</span><span class="br0">&#40;</span>url<span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>o<span class="br0">&#41;</span><span class="br0">&#123;</span>
        success <span class="sy0">&amp;&amp;</span> success<span class="br0">&#40;</span><span class="kw2">new</span> Date<span class="br0">&#40;</span>o.<span class="me1">datetime</span><span class="br0">&#41;</span><span class="sy0">,</span> o<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="sy0">;</span>
&nbsp;
<span class="co1">// Usage:</span>
$.<span class="me1">getTime</span><span class="br0">&#40;</span><span class="st0">'GMT'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>time<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw3">alert</span><span class="br0">&#40;</span>time<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>




<h2>MooTools version</h2>

<p>You&#8217;ll need to download the <a href="http://www.clientcide.com/docs/Request/JsonP">JsonP class</a>.</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span class="kw2">function</span> getTime<span class="br0">&#40;</span>zone<span class="sy0">,</span> success<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw2">var</span> url <span class="sy0">=</span> <span class="st0">'http://json-time.appspot.com/time.json'</span><span class="sy0">;</span>
    <span class="kw2">new</span> JsonP<span class="br0">&#40;</span>url<span class="sy0">,</span> <span class="br0">&#123;</span>
        data<span class="sy0">:</span> <span class="br0">&#123;</span> tz<span class="sy0">:</span> zone <span class="br0">&#125;</span><span class="sy0">,</span>
        onComplete<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span>o<span class="br0">&#41;</span><span class="br0">&#123;</span>
            success <span class="sy0">&amp;&amp;</span> success<span class="br0">&#40;</span><span class="kw2">new</span> Date<span class="br0">&#40;</span>o.<span class="me1">datetime</span><span class="br0">&#41;</span><span class="sy0">,</span> o<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span><span class="br0">&#41;</span>.<span class="me1">request</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="co1">// Usage:</span>
getTime<span class="br0">&#40;</span><span class="st0">'GMT'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>time<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw3">alert</span><span class="br0">&#40;</span>time<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>




<p>Thank you <a href="http://simonwillison.net/">Simon Willison</a> for making this API; seriously, I searched around the entire internets just for one damn API and I almost lost hope!</p>]]></content:encoded>
			<wfw:commentRss>http://james.padolsey.com/uncategorized/getting-the-real-time-in-javascript/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
