😥 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:

  1. At the moment Fibery does not allow the timezone to be defined for a workspace or for a particular user.

  2. Fibery stores all date-time fields in UTC on the server.

  3. UTC date-times are converted to the appropriate local time in the UI.

  4. 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

  • Automations

  • Reports.

Formulas and Automations 🤖

(All examples assume the user is in the GMT+2 timezone)

Example 1

Formula: ToText([Creation Date])

Creation Date:
Jun 14, 2021, 18:03

Formula result:
2021-06-14 16: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.

Example 2

Formula: DateTime(2021, 1, 6, 12, 0, 0)

Formula result:
Jun 1, 2021, 14:00

  • You define a date-time value in UTC

  • It converts according to your local timezone.

Example 4

Automation rule: When [Some field] is updated, set [DateTime field] value to Today()

[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.

Reports

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?

  1. 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

  2. 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!

Did this answer your question?