Issue
Timestamps in Script programs are different by an amount equal to the UTC offset of the workstation's timezone settings.
Product Line
EcoStruxure Building Operation
Environment
- Building Operation Enterprise Server
- Building Operation Automation Server (AS, AS-P, AS-B)
- Building Operation WorkStation Script editor
Cause
Take the following program as an example:
Datetime Output TimeOut, TimeOut2
TimeOut = StrToDate ("1/17/2012 15:00")
TimeOut2 = StrToDate ("1/17/2012 3:00 PM")
In StruxureWare Building Operation, the values will read: "1/17/2012 9:00:00 AM" (in this example, the UTC offset is set for -6).
In servers, all time values are stored in UTC, then the offset is applied by the client. When it receives a value from a Script program, it stores the value as UTC, then the offset for the selected timezone is applied.
Resolution
There are two workarounds:
- On the Workstation PC, set the PC's time to UTC
- Write code in the Script program to adjust the time values to UTC.
Also see the example code below to help understand operation
Datetime Output dtOut1
Datetime Output dtOut2
String Output str1
dtOut1 = Date 'Local time; displays with added UTCOffset
dtOut2 = Date - UTCOffset 'Local time, adjusted by the UTCOffset, displays properly
Print Date to str1 'Local time String value displays properly
(UTCOffset system variable was added in v2.0)