Hey guys,<div><br></div><div>  Thanks for your interest and help with getting Opa's handling of time zones on track! We just merged Alok's patch and I just added a Date.now_gmt() function that Owen was suggesting. In fact I first implemented:</div>

<div><font face="'courier new', monospace">now_at( {at_client} or {at_server} or {calling_site} location</font></div><div><font face="'courier new', monospace">      , {local_timezone} or {GMT} timezone</font></div>

<div><font face="'courier new', monospace">      ) : Date.date</font></div><div>(I hope the semantics is clear) but then I hit a dependency nightmare in the standard library, so had to step back to a simpler Date.now_gmt() -- having that and Date.now() it's easy enough to implement functionality of the above function.</div>

<div><br></div><div>  With this patch in place (Opa v. 1242 and above, I believe) one can compile the following program:</div><div><font face="'courier new', monospace">  <br></font><div><font face="'courier new', monospace">server function now_gmt_server() { Date.now_gmt() }</font></div>

<div><font face="'courier new', monospace">client function now_gmt_client() { Date.now_gmt() }</font></div><div><font face="'courier new', monospace">server function now_local_server() { Date.now() }</font></div>

<div><font face="'courier new', monospace">client function now_local_client() { Date.now() }</font></div><div><font face="'courier new', monospace"><br></font></div><div><font face="'courier new', monospace">function now() {</font></div>

<div><font face="'courier new', monospace">  function show(f) { Date.to_debug_string(f()) }</font></div><div><font face="'courier new', monospace">  <div>GMT server: {show(now_gmt_server)}</></font></div>

<div><font face="'courier new', monospace">  <div>GMT client: {show(now_gmt_client)}</></font></div><div><font face="'courier new', monospace">  <div>local server: {show(now_local_server)}</></font></div>

<div><font face="'courier new', monospace">  <div>local client: {show(now_local_client)}</></font></div><div><font face="'courier new', monospace">}</font></div><div><font face="'courier new', monospace"><br>

</font></div><div><font face="'courier new', monospace">function page() {</font></div><div><font face="'courier new', monospace">  <span onready={function (_) { #Body = now()}} /></font></div><div><font face="'courier new', monospace">}</font></div>

<div><font face="'courier new', monospace"><br></font></div><div><font face="'courier new', monospace">Server.start(Server.http, {title: "Now", ~page})</font></div><div><br></div><div> and I just run it getting:</div>

<div><br></div><div><div style="font-size:medium"><font face="'courier new', monospace">GMT server: 2012-02-06 | 17:29:14.234</font></div><div style="font-size:medium"><font face="'courier new', monospace">GMT client: 2012-02-06 | 17:24:34.177</font></div>

<div style="font-size:medium"><font face="'courier new', monospace">local server: 2012-02-06 | 18:29:14.290</font></div><div style="font-size:medium"><font face="'courier new', monospace">local client: 2012-02-06 | 18:24:34.222</font></div>

</div><div><br></div><div>in response.</div><div><br></div><div>  Concerning longer term support for time zones in Opa my plan was to:</div><div><ol><li>Introduce Timezone module and Timezone.timezone type -- most likely it should be represented by an abstract integer (offset in minutes from GMT). Having some kind of enumeration type for (most popular?) time zones would also be useful, but this seems to be a tricky issue... any good reference for that? some programming language that does that neatly? I'd rather not over-complicate things with summer times, leap seconds ans such, just yet.</li>

<li>Introduce a type for timezone-aware date (good name, anyone?) which will essentially be a pair: GMT time + Timezone.timezone</li><li>Introduce conversion functions between times in different time-zones.</li></ol><div>

  How does that sound? Any suggestions?</div><div>  Since with what we have now one can reasonably work with dates&times, I cannot promise I'll give this work the highest priority, though :/.</div></div><div><br>
</div>
<div>  Best,</div><div>  Adam</div><div><br></div><div class="gmail_quote">On Sun, Feb 5, 2012 at 20:51, Owen Gunden <span dir="ltr"><<a href="mailto:ogunden@phauna.org">ogunden@phauna.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">On Sat, Feb 4, 2012 at 7:05 PM, Alok Menghrajani <<a href="mailto:alok@fb.com">alok@fb.com</a>> wrote:<br>
> It's weird, I have not been getting all the emails from the list :(<br>
><br>
> Owen: I have a pull request that adds basic timezone support<br>
> (<a href="https://github.com/MLstate/opalang/pull/34" target="_blank">https://github.com/MLstate/opalang/pull/34</a>).<br>
<br>
</div>Hey, awesome, I can definitely work with this.<br>
<div class="im"><br>
> While I'm working to get this merged, feel free to look at it and let me<br>
> know if it fits your needs?<br>
<br>
</div>Actually you've just demonstrated the existence of Unix.gmtime in<br>
ocaml; if there were an equivalent of Time.now() but with gmt<br>
(Time.now_gmt()) that used gmtime underneath that would make what I'm<br>
doing really simple. I'm not sure if this fits into whatever timezone<br>
interface the Opa guys had in mind though. Maybe Adam can chime in?<br></blockquote><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
Opa mailing list<br>
<a href="mailto:Opa@lists.owasp.org">Opa@lists.owasp.org</a><br>
<a href="https://lists.owasp.org/mailman/listinfo/opa" target="_blank">https://lists.owasp.org/mailman/listinfo/opa</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><span style="font-family:'courier new',monospace"><i><span style="font-style:normal"><i>Adam Koprowski</i>                <b>[</b><a href="http://adam-koprowski.net/" target="_blank">http://adam-koprowski.net</a><b>] </b><br>

<i>Opa Tech Evangelist </i>@<i> MLstate</i> <b>[</b><a href="http://opalang.org/" target="_blank">http://opalang.org</a> |<b> </b><a href="http://mlstate.com/" target="_blank">http://mlstate.com</a><b>]</b></span></i></span><br>


</div>