<div dir="ltr"><div>I don't think you have missed anything, but the solution you offer doesn't seem to work or maybe I'm missing something.</div><div><br></div><div></div><div>? Date.ToUTC(date(2019,10,27,2,3))</div><div>10/27/2019 00:03:00</div><div><br></div><div>? cstr(Date.ToUTC(date(2019,10,27,2,3)))</div><div>10/26/2019 22:03:00</div><div><br></div><div>? cstr(date(2019,10,27,2,3))</div><div>10/27/2019 00:03:00</div><div><br></div><div>? system.timezone</div><div>-7200</div><div><br></div><div>This is what I want in essense:</div><div><br></div><div>? date(2019,10,27,2,3, "UTC")</div><div>10/27/2019 02:03:00</div><div><br></div><div>? cstr(date(2019,10,27,2,3, "UTC"))<br></div><div>10/27/2019 02:03:00</div><div><br></div><div>In other words, if I write date 27.10.2019 and time 2:03, it should be just that and nothing else. I don't want to make guesses where the user might travel or when there might be other sudden changes in the time zone. System.timezone is not useful here, because it is not constant.<br></div><div><br></div><div><br></div><div>Jussi<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Oct 27, 2019 at 7:23 PM T Lee Davidson <<a href="mailto:t.lee.davidson@gmail.com">t.lee.davidson@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 10/26/19 9:42 PM, Jussi Lahtinen wrote:<br>
> Is there a reliable way to detect any of those shenanigans happening to system clock?<br>
> And how much is shifted and in what direction?<br>
> <br>
<br>
> Let's say I want this; date(2019,10,27,2,3) in UTC, but I'm in different time zone (or perhaps even suddenly changing time zone without any warning). How I get the Date() function to return correct values?<br>
> <br>
> It would be easy, if date would accept one more argument; date(2019,10,27,2,3, "UTC")...<br>
> <br>
<br>
I think I must be missing something in what you are asking since I'm almost certain that you, knowing more about Gambas than I, <br>
must already be aware of the gb.util Date functions and System.TimeZone.<br>
<br>
It is recommended that a system with only Linux on it should have the hardware (CMOS) clock set to UTC. If that is the case, <br>
then the system clock should not change. (Linux uses the glibc time functions to convert the system time to local time as needed <br>
using the time zone info stored under, eg., /usr/share/zoneinfo.)<br>
<br>
System.TimeZone yields, "the number of seconds you must add to the local time to get the UTC time." Since this number can be <br>
negative, this gives us the amount of shift and the direction. Following the example in the Wiki, if one's time zone is UTC+2, <br>
System.TimeZone will return -7200 since one would actually have to subtract 7200 seconds to get back to a UTC representation.<br>
<br>
gb.util has Date.FromUTC ("Move a date back to local time if its local representation is actually in UTC.") and Date.ToUTC <br>
("Move a date so that its local representation is its UTC value."). So then perhaps one could do:<br>
Date.ToUTC(date(2019,10,27,2,3))<br>
<br>
<br>
___<br>
Lee<br>
<br>
<br>
----[ Gambas mailing-list is hosted by <a href="https://www.hostsharing.net" rel="noreferrer" target="_blank">https://www.hostsharing.net</a> ]----<br>
</blockquote></div>