😥 Timezones in programming are hard.
😥 Fibery is no exception here.
😥 Fibery is never an exception
In this article, we will explain how we deal with timezones in Fibery and what caveats there are.
The main points are:
At the moment Fibery does not allow the timezone to be defined for a workspace or for a particular user.
Fibery stores all date-time fields in UTC on the server.
UTC date-times are converted to the appropriate local time in the UI.
The timezone conversion applies only for date fields with time.
💖 Your Date field doesn't include time? Perfect.
🚨 Exception: you convert your Date field to Date Time using formula
How does this work in practice? 💪
💖 Your timezone is GMT +2.
You enter 13:00 for a date-time field in the UI.
The server will store this as 11:00 UTC.
After refresh, the backend will send 11:00 to the UI
It will be converted back to your local timezone
You will see 13:00.
If someone who is in the GMT+3 timezone opens the same entity, she will see 14:00. Everything looks good so far.
😥 However, there are some functions in Fibery which are executed on the server, which operates in UTC. Remember, there is no definition of the workspace timezone and the server has no knowledge about each user's timezone.
Functions that use UTC time:
Formulas and Automations 🤖
(All examples assume the user is in the GMT+2 timezone)
Jun 14, 2021, 18:03
The result in formula is a text field
Formulas are executed on the server
You get a text representation of the [Creation Date] field in UTC.
No conversion to local timezone is being applied here.
If you want to retrieve 18:03 (which is what you see on UI for [Creation Date] field), you can change the formula to
ToText([Creation Date] + Hours(2)). But in this case, every user will see 18:03, no matter which timezone they are in because the result is a text field.
DateTime(2021, 1, 6, 12, 0, 0)
Jun 1, 2021, 14:00
You define a date-time value in UTC
It converts according to your local timezone.
Automation rule: When [Some field] is updated, set [DateTime field] value to
[Some field] is modified at
Jun 14, 2021, 18:03
[DateTime field] value:
Jun 14, 2021, 02:00
Today() returns a UTC date (with no time value). As [DateTime field] is of the type date-time, we convert
Today() to a date-time value, setting the time as the beginning of the day in UTC. You will see 02:00 in the UI because you're in the GMT+2 timezone.
In this particular case, it might be better to use the
Now() function instead.
You want to see, how many bugs were completed during a specific period.
So you need to build a histogram chart report:
Count of Bugs vs Completion Date-Time.
For one particular bug, the Completion Date-Time is set to
Jun 14, 2021 01:00 in the UI.
This is equivalent to
Jun 13 23:00 in UTC
So this bug will be shown in the report as counting in the bar that corresponds to Jun 13.
How to live with that?
Feel free to add "missing" hours in formulas & automations!
[Your Date Field] + Hours(number of offset hours in your timezone)
🚨 if your teammates live in different timezones, that can be a problem. Just keep that in mind
We will implement support for user timezones. Maybe. Some day. If you want to speed that up, feel free to ping us anywhere and share your pains/feedback about it!