Hi,I am facing an issue with the OutSystems Interaction → DatePicker widget related to DateTime and timezone conversion.
My database stores event STARTS_AT and ENDS_AT values in UTC. When I fetch the event using an Aggregate, the DateTime value is correct.
For example:
Database / Aggregate value:18 Sep 2026 00:00
When I display the Aggregate value using:
FormatDateTime(EventInfo.EventStartDate, "dd MMM yyyy HH:mm")
I get:
18 Sep 2026 00:00
However, when I use the same DateTime in the DatePicker for Edit, the widget applies a timezone conversion automatically.
For example, for an India timezone (UTC+5:30):
Database UTC: 18 Sep 2026 00:00DatePicker Edit: 18 Sep 2026 05:30
Similarly, for a UTC+7 timezone:
Database UTC: 18 Sep 2026 00:00DatePicker Edit: 18 Sep 2026 07:00
This behavior is expected: in Reactive apps the DatePicker (and any Date/DateTime input) runs in the browser and always shows the value converted to the client timezone, while the value stored in the DB/aggregate is UTC. Timezone conversion is happening automatically in reactive web app
DatePicker
That’s why:
2026-09-18 00:00
2026-09-18 05:30
2026-09-18 07:00
There’s currently no built‑in switch to “turn off” this client‑timezone conversion in Reactive apps. You have to work around it depending on what you actually want the user to see/edit.
If STARTS_AT and ENDS_AT are meant to represent a real point in time (same moment worldwide), then the DatePicker behavior is technically correct: users should see the local time of that UTC instant.
STARTS_AT
ENDS_AT
In that case you don’t need to change anything and should keep using the DatePicker as is.
To avoid the automatic client conversion, don’t bind the DatePicker directly to the DateTime. Instead:
"dd MMM yyyy HH:mm"
Example:
EventStartUTC_Text : Text
EventStartUTC_Text = DateTimeToText(EventInfo.EventStartDate, "yyyy-MM-dd HH:mm")
Value
EventStartUTC_Text
EventInfo.EventStartDate = TextToDateTime(EventStartUTC_Text)
By passing Text to the client and converting back to DateTime on the server you bypass the automatic timezone conversion. Timezone conversion is happening automatically in reactive web app
Typical scenario: event belongs to a plant/location in some timezone, and you want to show that timezone, regardless of where the user is. [Reactive app] Disable showing dates in client timezone
Approach:
Pattern:
LocationDateTime_Text = DateTimeToText(AdjustedLocationDateTime, "yyyy-MM-dd HH:mm")
LocationDateTime_Text
LocationDateTime = TextToDateTime(LocationDateTime_Text) EventInfo.EventStartDate = LocationToUTC(LocationDateTime, LocationOffset)
Again, the key is: use Text on the client, do timezone math on the server, then convert back.
In some situations (especially using Flatpickr under OutSystems UI) a DatePicker bound to a Date/DateTime gets shifted by timezone and may even appear as a different day. This is the same root cause: the underlying JS library treats the value as midnight UTC and applies an offset. Date Picker Showing One Day Earlier in PST (Traditional Web App - Timezone Issue)
Common workarounds:
"yyyy-MM-dd"
Date
Text
DateToText
TextToDate
Because Reactive automatically converts DateTime to client timezone on the browser, you cannot stop the DatePicker from doing that directly. To control what the user sees:
If you describe whether your events should be seen in UTC, in user-local time, or in a fixed location timezone, I can outline a specific implementation using your STARTS_AT / ENDS_AT flow.