Opened 8 weeks ago
Last modified 7 weeks ago
#4029 new Bug
_Date_Time_SystemTimeToDateTimeStr() wrong output
Reported by: | jchd18 | Owned by: | |
---|---|---|---|
Milestone: | Component: | Standard UDFs | |
Version: | 3.3.14.0 | Severity: | None |
Keywords: | Cc: |
Description (last modified by jchd18)
The function _Date_Time_SystemTimeToDateTimeStr() has two related but distinct bugs.
Note: the timestamp returned by _Date_Time_GetSystemTime() is raw UTC.
Local $tST = _Date_Time_GetSystemTime() ConsoleWrite(_Date_Time_SystemTimeToDateTimeStr($tST, 1, 0) & @LF) ConsoleWrite(_Date_Time_SystemTimeToDateTimeStr($tST, 1, 1) & @LF)
produces the same output:
2024/09/26 12:23:46 2024/09/26 12:23:46
but the first should be shifted by timezone and DST settings. (I'm in France and currently UTC+02:00.)
Local $tST = _Date_Time_GetSystemTime() ConsoleWrite(_Date_Time_SystemTimeToDateTimeStr($tST, 3, 0) & @LF) ConsoleWrite(_Date_Time_SystemTimeToDateTimeStr($tST, 3, 1) & @LF)
produces a very wrong output:
2024-09-26T12:30:29-02:00 2024-09-26T12:30:29Z
The second output correctly displays the UTC time.
The first line has YMDhms wrong by 2 hours and timeshift should read "+02:00", hence the first line should be showing local time with offset from UTC, like this:
2024-09-26T14:30:29+02:00
The above reads "it's 14:30:29 local time, and offset from UTC is +2h". To compute UTC from that, one must subtract the offset from the timestamp.
The help file is ambiguous and even wrong on the role of parameter $iType.
Attachments (0)
Change History (5)
comment:1 Changed 8 weeks ago by jchd18
- Component changed from AutoIt to Standard UDFs
comment:2 Changed 8 weeks ago by jchd18
- Description modified (diff)
comment:3 Changed 8 weeks ago by jchd18
- Description modified (diff)
comment:4 Changed 8 weeks ago by Jpm
comment:5 Changed 8 weeks ago by jchd18
Hi Jpm,
I'll have a look at it. But I first need to finish my own timescale UDF and, trust me, it isn't just cake.
I write down here preliminary notes.
First, GMT has no more any unambiguous meaning since 1972-01-01. The string "GMT" should be replaced by the official name "UTC" everywhere in source and help.
Then the purpose of the function here is to produce a datetime string. OK but which datetime? This is untold and the $iType parameter only tells if the input structure is Local or UTC.
It seems to me that we need another parameter to decide what the user wants (values for France at the time of writing, UTC+1 and currently +1h summertime):
A) the current UTC time string, e.g. "2024-09-28T12:00:00 UTC", with or without the " UTC" suffix
or
B) his Local timestring, e.g. "2024-09-28T14:00:00+02:00", with or without the "+02:00" offset to UTC
or
C) yet another datetime format to be decided.
Of course, $MS always making things tricky, the structure gives biais the other way, resp. -60 and -60 minutes (biais = UTC - Local). This means we have to subtract that biais from UTC to get local time. This is not done by the function. Also that biais sign should be reversed to be appended to a local time.
Guidelines for posting comments:
- You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
- In-depth discussions should take place on the forum.
For more information see the full version of the ticket guidelines here.
Hi,
Thanks for the ticket but do you have a fix to propose?