I've all but given up on the idea of ever understanding the variety of different approaches that large businesses take in relation to time zones.

Whilst integrating Garmin activities into Training Plan and Activity Filter I noticed that they handle time zones completely differently to how I do, and completely differently to how Strava do.

Time Settings

Garmin has two options for setting the clock on their watches:

  • Auto. Uses GPS data/syncs with your other devices (phone etc) to discern the time.
  • Manual. Allows you to manually set the time.

Without GPS

Based on some trial and error I have discerned that if you upload an activity without GPS data Garmin will display the time zone set by yourself within your user preferences.

The same occurs if you manually create an activity in Garmin Connect.

That is fair enough I guess given that there is nothing else to go on.

Unfortunately however the Garmin Activity API does not return that time zone identifier. Instead it returns a UTC offset, yet as we all know (right?) Offsets Aren’t Time Zones !!

So with the data Garmin gives to me I can't display the time the activity took place and the time zone in which it took place.

As outlined in my previous post Time zones in software, we seek to "display the timezone on any activity which took place somewhere different to the users 'home' location" .

This is possible using the data that Strava provides, but not possible with the data provided by Garmin.

With GPS

If you complete an activity with GPS data Garmin will ignore any manually set time on your device and instead discern the time zone based on the GPS data.

I'm not exactly sure why a user would want to 'fake' the time of their activity but it is a little confusing that the time you set on your watch will not match the time displayed on the activity.

Resolution

Garmin clearly calculate the time zone because it is displayed when you view an activity on Garmin Connect.

When you sync Garmin data to Strava and then pull data from Strava, the time zone is returned in the response. Either Garmin pass time zone identifiers to Strava or Strava discern the time zone themselves.

I could take the latitude/longitude values returned by Garmin and discern the time zones myself but this seems an unnecessary waste of time when Garmin already have the data. It also doesn't help with activities that do not have GPS data associated with them. Users might regularly move around the world, manually updating their time zone setting.

As such, the resolution is for Garmin to improve their API. I have reached out to their support team but I don't hold much hope based on past experiences.