private async Task InitDeviceTime() { // not sure why the band doesn't report timezone in a standard way, but the time returned by // the band is in UTC (as per the function name) while the timeZone is a collection of properties // with the actual time zone represented as a raw string... var timeZone = await _client.GetDeviceTimeZoneAsync(); var time = await _client.GetDeviceUtcTimeAsync(); // ... luckily we have the "ZoneOffsetMinutes" property which can be used to offset the time to the correct time that is displayed on the band. time = time.AddMinutes(timeZone.ZoneOffsetMinutes); DeviceTime = time; // start a timer to update the current time (we cheat by using a local timer // instead of polling the device) _timeUpdater = new System.Timers.Timer(); _timeUpdater.Elapsed += _timeUpdater_Elapsed; _timeUpdater.Interval = (60 - time.Second) * 1000; _timeUpdater.Start(); }